参考答案

应该避免这种写法:

constructor(props) { super(props); // 不要这样做 this.state = { color: props.color }; }

因为这样做毫无必要(你可以直接使用 this.props.color),同时还产生了 bug(更新 prop 中的 color 时,并不会影响 state)。

只有在你刻意忽略 prop 更新的情况下使用。

此时,应将 prop 重命名为 initialColor 或 defaultColor。必要时,你可以修改它的 key,以强制 重置 其内部 state。