繁体   English   中英

为什么我的组件无法检测到道具变更?

[英]Why won't my component detect a props change?

我觉得自己做对了吗? 似乎很简单,我感觉自己缺少一些东西。 感谢任何帮助谢谢

function App() {
  let jsonData = "a saved page from the database";

  return (
    <div className="App">
      <button onClick={() => {
        jsonData = "a different saved page from the database";        
      }}>
        Change jsonData
      </button>
      <Touchscreen
        key={jsonData}  // something i tried but still doesn't work
        jsonData={jsonData}
      />
    </div>
  );
}

export const Touchscreen = (props) => {  
  React.useEffect(() => {    
    console.log('jsonData: ', props.jsonData);  // won't trigger
  }, [props.jsonData]);

  return (
    <div>
      <span>{props.jsonData}</span>  // never re-renders
    </div>
  );
}

该组件在每次重新渲染时都重新声明jsonData ,您无法在re-renders上保留更改。 如果您想在组件生命周期中保留某些东西,那么state就是它的地方

function App() {
  const [jsonData, setJsonData] = useState("a saved page from the database");

  return (
    <div className="App">
      <button onClick={() => {
        setJsonData("a different saved page from the database");        
      }}>
        Change jsonData
      </button>
    </div>
  );
}

您需要将jsonData作为组件状态的属性,然后使用setState更改值。 调用setState将导致组件重新呈现。

有关setState更多信息,请参阅docs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM