【发布时间】:2021-09-16 07:25:53
【问题描述】:
我有一个功能组件,并希望更新该组件中的某些状态(基于某些上下文 API 对象值,即我通过 useContext 获得)
现在,我看到了 2 个选项;
- 使用局部变量
- 使用 setState
我只是想了解这两种方式之间的区别。另外要补充的是,在使用 setState 时,我遇到了以下问题 错误:重新渲染过多。 React 限制渲染次数以防止无限循环。
补充一下,这个功能组件是 App 组件的直接子组件,上下文对象在另一个组件中更新,该组件也是 App 组件的直接子组件。
const MyComponent = () => {
let myTitle = "ABC"; //Option 1 to use 'myTitle'
//const [myTitle, setMyTitle] = useState('ABC'); //Option 2 to use 'myTitle'
if (someContextApiObj.value === "XYZ") {
myTitle = "XYZ";
//setMyTitle("XYZ")
}
return (
<>
<ChildComponent
myTitle={myTitle}
/>
</>
);
};
export default MyComponent;
【问题讨论】:
-
用户是否更改了标题,或者您只是在组件渲染上评估一次?你在传递任何道具吗?
-
是的,所以标题可以根据其他组件中的某些链接点击来更新....我正在使用上下文 api 对象从其他组件中检索信息
-
您能否修改问题中的代码以最准确地反映标题的更新方式?
-
您似乎想根据传递给组件的某些 prop 或上下文值来计算
myTitle值。在本地状态中存储传递的 props/context 值通常被认为是 React 中的反模式。计算myTitle值并将其传递给子组件。
标签: reactjs react-hooks