Javascript 反应:为什么useState更改时这些组件没有更新?(安装应用程序后呈现的组件)

Javascript 反应:为什么useState更改时这些组件没有更新?(安装应用程序后呈现的组件),javascript,reactjs,react-dom,use-effect,use-state,Javascript,Reactjs,React Dom,Use Effect,Use State,一旦安装了应用程序,就会呈现组件(原因是这些组件需要插入到获取的纯HTML中) 我看到状态发生了变化,但元素并没有对此做出反应 有什么解决办法吗 import React,{useffect,useState}来自“React”; 从“react dom”导入react dom; 导出默认函数App(){ const[elements,setElements]=useState(“无”); useffect(()=>{ log(“全局使用效果:+元素”); },[要素]; 常量输入=({set

一旦安装了应用程序,就会呈现组件(原因是这些组件需要插入到获取的纯HTML中)

我看到状态发生了变化,但元素并没有对此做出反应

有什么解决办法吗

import React,{useffect,useState}来自“React”;
从“react dom”导入react dom;
导出默认函数App(){
const[elements,setElements]=useState(“无”);
useffect(()=>{
log(“全局使用效果:+元素”);
},[要素];
常量输入=({setElements})=>(
{
设置元素(如目标值);
}}
/>
{elements}
);
常量元素=({Elements})=>{
useffect(()=>{
日志(“元素使用效果:+元素”);
},[要素];
返回{elements};
};
常量Elements2=({elements})=>{elements};
useffect(()=>{
console.log(“第一次使用效果”);
ReactDOM.render(
,
document.getElementById(“元素”)
);
ReactDOM.render(
,
document.getElementById(“elements2”)
);
ReactDOM.render(
,
document.getElementById(“inputId”)
);
}, []);
//需要拆分纯HTML,否则代码沙盒
//…给出了一个错误,这是一个错误
常量plainhtml1=`
此纯html已被提取
`;
常量纯HTML2=`
元素数:
`;
常量纯HTML3=`
其他要素的数量:
`;
返回(
你好,代码沙盒
);
}

元素不知道
应用程序的状态在发生变化时会发生变化。使用以下效果告诉他们更改的情况:

useffect(()=>{
ReactDOM.render(
,
document.getElementById(“元素”)
);
ReactDOM.render(
,
document.getElementById(“elements2”)
);
ReactDOM.render(
,
document.getElementById(“inputId”)
);
},[elements,setElement]);

每次
元素
设置元素
值更改时,React将调用效果(从而重新渲染元素)。实际上,由于效果非常相似,只需将
元素
添加到其依赖项列表(第二个参数中的数组)。

元素不知道
应用程序
状态在发生更改时会发生更改。使用以下效果告诉他们更改的情况:

useffect(()=>{
ReactDOM.render(
,
document.getElementById(“元素”)
);
ReactDOM.render(
,
document.getElementById(“elements2”)
);
ReactDOM.render(
,
document.getElementById(“inputId”)
);
},[elements,setElement]);

每次
元素
设置元素
值更改时,React将调用效果(从而重新渲染元素)。实际上,由于效果非常相似,只需将
元素
添加到其依赖项列表(第二个参数中的数组)。

非常不寻常的是,您的组件是在另一个组件中定义的;如果你这样做是为了让他们能和父母分享状态,那就不太好了;您可能希望将任何共享状态作为道具传递到中,或者使用类似于上下文的机制。只需使用外部组件进行测试,但问题仍然存在(如果这是您的意思)我认为这是因为多次调用
ReactDOM.render
的useEffect在其依赖项中没有
元素array@azium完全正确,非常感谢!我可以看到,Finesse已经回答了这个问题。非常不寻常的是,您的组件是在另一个组件中定义的;如果你这样做是为了让他们能和父母分享状态,那就不太好了;您可能希望将任何共享状态作为道具传递到中,或者使用类似于上下文的机制。只需使用外部组件进行测试,但问题仍然存在(如果这是您的意思)我认为这是因为多次调用
ReactDOM.render
的useEffect在其依赖项中没有
元素array@azium完全正确,非常感谢!我可以看到Finesse已经回答了这个问题。非常感谢,这是否意味着每次元素改变时都必须进行渲染?会说不可能是这样的是的,这就是React的工作原理。如果元素是普通的
App
子元素,则其工作原理相同。但是React将首先比较虚拟DOM,并且只对真实DOM应用所需的更改。非常感谢,这是否意味着每次元素更改时都必须进行渲染?会说不可能是这样的是的,这就是React的工作原理。如果元素是普通的
App
子元素,则其工作原理相同。但是React将首先比较虚拟DOM,并仅对真实DOM应用所需的更改。