Javascript 在同一个元素中是否可以从父元素设置状态和从子元素设置状态?
我有一个组件,我需要更新来自父级的值(确定),但是如果用户更改输入(子级/功能组件)的值,我需要在不传递给父级的情况下设置此值以重新渲染子级 请参见此示例: 按照以下步骤操作:Javascript 在同一个元素中是否可以从父元素设置状态和从子元素设置状态?,javascript,reactjs,react-native,react-props,Javascript,Reactjs,React Native,React Props,我有一个组件,我需要更新来自父级的值(确定),但是如果用户更改输入(子级/功能组件)的值,我需要在不传递给父级的情况下设置此值以重新渲染子级 请参见此示例: 按照以下步骤操作: 在输入上设置一些值,并查看控制台日志 点击按钮,输入接收新值 再次更改输入值 单击按钮,为什么不再次工作并将值设置为输入 我需要独立的子级(函数组件或类组件),有时我需要使用父级来设置子级值,但也需要保留子级来更改自己的状态,这是可能的?您的示例不起作用的原因是,第一次单击后的任何按钮都不会更改父状态的值,因此不会触发
我需要独立的子级(函数组件或类组件),有时我需要使用父级来设置子级值,但也需要保留子级来更改自己的状态,这是可能的?您的示例不起作用的原因是,第一次单击后的任何按钮都不会更改父状态的值,因此不会触发渲染 下面是一个简单的代码片段,它通过在每次单击时添加一个唯一的计数器值来解决此问题,以始终触发渲染,但您也可以将处理程序传递给子级并清除父级状态,或将其与子级状态同步,等待下一次按钮单击 我会说,设置道具的状态是一种反模式,会导致意外的断开(问题证明了这一点);最好在一个地方设置/处理状态
const-App=()=>{
const[parentValue,setParentValue]=React.useState(“”);
const clickCount=React.useRef(0);
常量parentValueHandler=()=>{
setParentValue(`newvalue from parent${++clickCount.current}`);
};
返回(
将值更改为父级
)
}
const Child=({parentValue})=>{
const[value,setValue]=React.useState(parentValue);
React.useffect(()=>{
setValue(parentValue);
},[parentValue]);
返回(
setValue(e.target.value)}
/>
);
}
ReactDOM.render(
,
document.getElementById(“根”)
);代码>
下面是一个在父级中保持状态并将控制权传递给子级的示例:Hey@pichard,thx for reply,但在这个示例中,状态由父级控制,我需要保持由父级和子级控制,是否可以在不向父级传递回调的情况下重新呈现子级?谢谢。我首先要说,从道具设置状态是一种反模式,最好在一个地方设置/处理状态。但您的示例不起作用的原因是,第一次单击按钮会更改valueParent
,因此会重新渲染,但任何后续单击都不会更改valueParent
的值,因此不会触发渲染。(如果将时间戳或其他新值添加到setValueParent()
调用中,它将按预期工作)