[英]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.