我试图将传递给React.Component的对象作为属性分配给状态值,像这样,

state = {
    rota: this.props.rota
}

render() {
    // const { cleaning, chairs, creche, flowers } = this.state.rota;
    const { cleaning, chairs, creche, flowers } = this.props.rota;

    console.log(creche);
}


获得状态值的注释掉的部分打印出一个空字符串,但是属性值是正确的。将props.rota分配给state.rota时,我做错什么了吗?

我正在使用打字稿,并且已经在程序的另一位置进行了精确的操作-但是,传入的属性是值类型(字符串)而不是对象类型。

谢谢!

最佳答案

这通常是一个坏习惯。

看你的情况。

您可以从父组件获得作为道具的价值。

每当父组件中的此值更改时,内部组件将已经重新呈现。

如果您采用类似的方法,那么您最有可能要做的就是也要更改内部组件中的值(通过状态),该更改不会反映在父组件上。

实际上,您正在打破单向数据流的设计模式,这种模式在很大程度上依赖于反应。

因此,我个人的观点是在这种情况下提高国家地位,避免这种情况。如果您想将更改传达给父级,或者使用某些状态管理(上下文,redux等),请使用回调。

或使用HOC或渲染道具零部件设计更好的解决方案。

08-16 03:40