UNPKG

frontend-hamroun

Version:

A lightweight frontend JavaScript framework with React-like syntax

22 lines (21 loc) 841 B
function arePropsEqual(oldProps, newProps) { const oldKeys = Object.keys(oldProps).filter(k => k !== 'children'); const newKeys = Object.keys(newProps).filter(k => k !== 'children'); if (oldKeys.length !== newKeys.length) return false; return oldKeys.every(key => oldProps[key] === newProps[key]); } export function diff(oldNode, newNode) { if (oldNode == null || newNode == null) return oldNode !== newNode; if (typeof oldNode !== typeof newNode) return true; if (typeof newNode === 'string' || typeof newNode === 'number') return oldNode !== newNode; if (newNode.type !== oldNode.type) return true; return !arePropsEqual(oldNode.props, newNode.props); } export function shouldComponentUpdate(oldProps, newProps) { return !arePropsEqual(oldProps, newProps); }