Javascript React-从父组件设置子组件的状态
我有两个部分。主组件和子组件 让我们假设一个函数在主组件中被触发,导致其Javascript React-从父组件设置子组件的状态,javascript,reactjs,Javascript,Reactjs,我有两个部分。主组件和子组件 让我们假设一个函数在主组件中被触发,导致其状态发生变异。 主组件的状态作为道具传递给子组件。现在,应该使用子组件的道具中新更新的数据来设置子组件的状态 我无法在``componentDidUpdate上执行此操作,因为它将导致无限循环。 另一方面,我不想将孩子的状态提升到主组件,因为它的大多数代码在主组件中都是无用的 我希望您能提供帮助componentdiddupdate将prevProps作为参数componentdiddupdate(prevProps、pre
状态发生变异。
主组件的状态
作为道具传递给子组件。现在,应该使用子组件的道具
中新更新的数据来设置子组件的状态
我无法在``componentDidUpdate上执行此操作,因为它将导致无限循环。
另一方面,我不想将孩子的状态提升到主组件,因为它的大多数代码在主组件中都是无用的
我希望您能提供帮助componentdiddupdate
将prevProps
作为参数componentdiddupdate(prevProps、prevState、snapshot)
。因此,为了不在无限循环中获取代码,您可以将this.props
与prevProps
进行比较,并相应地更新状态
componentDidUpdate(prevProps) {
if(this.props.data !== prevProps.data) {
// update the new state here this will not cause infinite loop
}
}
componentDidUpdate
将prevProps
作为参数componentDidUpdate(prevProps、prevState、snapshot)
。因此,为了不在无限循环中获取代码,您可以将this.props
与prevProps
进行比较,并相应地更新状态
componentDidUpdate(prevProps) {
if(this.props.data !== prevProps.data) {
// update the new state here this will not cause infinite loop
}
}
您可以使用React中提到的getDerivedStateFromProps
:
导出默认类子扩展组件{
静态getDerivedStateFromProps(newProps,currentState){
返回{
value:newProps.value
}
}
render(){
返回(
{/*您的布局*/}
);
}
}
您可以使用React中提到的getDerivedStateFromProps
:
导出默认类子扩展组件{
静态getDerivedStateFromProps(newProps,currentState){
返回{
value:newProps.value
}
}
render(){
返回(
{/*您的布局*/}
);
}
}
用于使用挂钩的功能组件
function Child(props) {
const [whatever, setWhatever] = React.useState(props.whatever);
React.useEffect(() => {
setWhatever(props.whatever);
}. [whatever]);
}
export default Child;
希望有帮助。了解使用挂钩的功能组件
function Child(props) {
const [whatever, setWhatever] = React.useState(props.whatever);
React.useEffect(() => {
setWhatever(props.whatever);
}. [whatever]);
}
export default Child;
希望有帮助。您为什么要在该州存储道具?为什么不直接使用this.prop.which
?因为渲染将取决于子组件的状态。主组件中的道具用于子组件中的函数。也许,我遗漏了一些东西,还有更好的方法吗?不需要将道具保存在状态中。在道具中设置状态总是会让你陷入麻烦。直接使用道具值即可。你为什么要在州里存放道具?为什么不直接使用this.prop.which
?因为渲染将取决于子组件的状态。主组件中的道具用于子组件中的函数。也许,我遗漏了一些东西,还有更好的方法吗?不需要将道具保存在状态中。在道具中设置状态总是会让你陷入麻烦。直接使用道具值即可。和