
在 react 中會觸發重新渲染的主要是 props 及 state
是元件外部傳入的參數,只讀屬性, 是不可變的 ( Immutable ),一但建立就不可變,只能透過銷毀,重建改變數據,通過判斷記憶體地址是否一致,來確認對象是不是有經修改過。
this.setState ({ count: this.state.count + 1 }, () => {
 console.log(this.state.count);  
});
onClick={() => {
            this.setState(
              (preState, preProps) => {
                return { count: preState.count + 1 };
              }              
            );
            this.setState(
              (preState, preProps) => {
                return { count: preState.count + 1 };
              }             
            );            
          }}

在組件接收到一個新的 prop 或更新後被調用
P.S.但需要特別注意的是,當該元件中任何state被setState設定時,componentDidUpdate都會被重新呼叫。所以必須特別注意目前的邏輯是否有出現無限遞迴的可能。
shouldComponentUpdate(nextProps, nextState) {
  return true; // 反回true 更新 false 不更新
}
interface RobotProps {
  id: number;
  name: string;
  email: string;
}
interface RobotState {
  random:number
}
const Robot: React.FC<RobotProps,RobotState> = ({ id, name, email }) => {
const value = useContext(appContext)
  return (        
          <div className={styles.cardContainer}>
            <img alt="robot" src={`https://robohash.org/${id}`} />
            <h2>{name}</h2>
            <p>{email}</p>
            <p>{value.username}</p>
          </div>            
  );
};
export default Robot;
onClick={this.handlerClick.bind(this)}>
handlerClick = (e) => {
    this.setState({ isOpen: !this.state.isOpen });
};