Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在ReactJs中,如果子对象是静态生成的,我可以使用useffect()重新渲染子对象,但如果它是';动态的_Javascript_Reactjs_React Hooks_Use Effect - Fatal编程技术网

Javascript 为什么在ReactJs中,如果子对象是静态生成的,我可以使用useffect()重新渲染子对象,但如果它是';动态的

Javascript 为什么在ReactJs中,如果子对象是静态生成的,我可以使用useffect()重新渲染子对象,但如果它是';动态的,javascript,reactjs,react-hooks,use-effect,Javascript,Reactjs,React Hooks,Use Effect,我有一个父组件: 从“反应引导/按钮”导入按钮 从“React”导入React,{useState,useffect}; 从“./Counter”导入计数器 函数App(){ const[disabledButton,setdisabledButton]=useState(false); const[count,setCount]=useState(2); 函数disableButtonClicked(){ 返回禁用按钮?“是”:“否”; } 常量[buttonList,setButtonL

我有一个父组件:

从“反应引导/按钮”导入按钮
从“React”导入React,{useState,useffect};
从“./Counter”导入计数器
函数App(){
const[disabledButton,setdisabledButton]=useState(false);
const[count,setCount]=useState(2);
函数disableButtonClicked(){
返回禁用按钮?“是”:“否”;
} 
常量[buttonList,setButtonList]=useState(
[ ,
]
);
const addButton=事件=>{
设置计数(计数+1);
setButtonList(buttonList.concat())
}
返回(
{/*静态添加的组件。我可以禁用按钮*/}
{/*随机添加的组件我无法禁用按钮*/}
{buttonList.map((button)=>({button}))}
禁用按钮
setdisabledButton((prev)=>!prev)}
/>
添加按钮
);
}

导出默认应用程序您已为父组件和子组件粘贴了相同的代码。感谢您的注意!通过将组件存储在状态-,您在
计数器
组件周围创建了一个陈旧的闭包。感谢您的评论@lawrence witt,我是否应该理解,将组件存储在状态被认为是不好的做法?当组件接受易于更改的道具时,绝对是这样。将纯组件储存在预计不会收到新道具的状态通常是好的。我个人更喜欢分开,但那是一个固执己见的选择。