Reactjs 用户道具还是将道具置于状态?

Reactjs 用户道具还是将道具置于状态?,reactjs,Reactjs,我正在学习一个反应教程。在这里,讲师没有使用直接使用this.props.errors返回props redux的错误 相反,在ComponentWillReceiveProps中,他将props.errors设置为state componentWillRecieveProps(nextProps) { if (nextProps.errors) { this.setState({ errors: nextProps.errors}) } } 这样做有什么意义?为什么不直接使用

我正在学习一个反应教程。在这里,讲师没有使用直接使用
this.props.errors
返回props redux的错误

相反,在ComponentWillReceiveProps中,他将props.errors设置为state

componentWillRecieveProps(nextProps) {
  if (nextProps.errors) {
    this.setState({ errors: nextProps.errors})
  }
}

这样做有什么意义?为什么不直接使用this.props.errors?

通常这是个坏主意,您可能希望直接使用
道具

如官方文件所述:

这就是您想要实现的目标:

两者的关键在于,对于任何一段数据,您都需要选择一个 将其作为真相来源的单一组件,并避免 在其他组件中复制它

如果你把道具复制到州里,你会把值存储在两个不同的地方


请阅读整个文档页面以查看解决方案

是直接在child中使用道具还是将其存储在state中取决于您将如何使用道具

  • 如果状态将直接从道具派生出来,那么通常情况下,您应该直接使用道具,而不是将其保持在状态
  • 仅当您面临要在本地更新值的情况,并且仅在确认操作时更新道具的提供程序时,才将道具存储在状态。这种情况的一个例子是,当您有一个输入组件,其值由父级作为道具提供,但您希望在本地跟踪的任何更改,然后在提交操作时,您可以将该值传递回父级。这是一个输入不受控实现的示例