如何将更新数据发送到子组件。反应
How do I send updating data to a child component. React
如果我有一个对象键值,我们假设这些键值会因某些输入而发生变化。如何更新采用这些值并显示它们的子组件。当我将值作为道具发送给子组件时,它们显然不会更新并保持为 tempData 中设置的初始值。那么如何提示子道具重新发送或更新呢?
我已经有了获取数据并将其全部放入 tempData 对象中相应位置的函数。我通过在对象中设置数据来解决这个问题吗?
const Parent = () => {
const tempData = {
location: "",
weather: "",
temperature: "",
};
return (
<>
<System onChange={(value) => urlHandler(value)} />
<City onChange={(value) => setCity(value)} />
<Data
location={tempData.location}
weather={tempData.location}
temperature={tempData.temperature}
/>
</>
};
const Child = (props) => {
return(
<>
<div>location: {props.location}</div>
<div>temperature: {props.temperature}</div>
</>
)
};
React 无法检测到您已发生变异 tempData
因此它不会使用新数据重新渲染元素。
改为将数据存储在 状态 中。使用状态API更新状态会触发重新渲染。
这在 React tutorial but that focuses on old-style class components. Modern code would use the useState
hook in a function component instead. This is also covered by the MDN React tutorial 中有介绍。
如果我有一个对象键值,我们假设这些键值会因某些输入而发生变化。如何更新采用这些值并显示它们的子组件。当我将值作为道具发送给子组件时,它们显然不会更新并保持为 tempData 中设置的初始值。那么如何提示子道具重新发送或更新呢?
我已经有了获取数据并将其全部放入 tempData 对象中相应位置的函数。我通过在对象中设置数据来解决这个问题吗?
const Parent = () => {
const tempData = {
location: "",
weather: "",
temperature: "",
};
return (
<>
<System onChange={(value) => urlHandler(value)} />
<City onChange={(value) => setCity(value)} />
<Data
location={tempData.location}
weather={tempData.location}
temperature={tempData.temperature}
/>
</>
};
const Child = (props) => {
return(
<>
<div>location: {props.location}</div>
<div>temperature: {props.temperature}</div>
</>
)
};
React 无法检测到您已发生变异 tempData
因此它不会使用新数据重新渲染元素。
改为将数据存储在 状态 中。使用状态API更新状态会触发重新渲染。
这在 React tutorial but that focuses on old-style class components. Modern code would use the useState
hook in a function component instead. This is also covered by the MDN React tutorial 中有介绍。