当前位置: 首页 > 知识库问答 >
问题:

为什么反模式让反应组件编辑自己的道具?

湛钊
2023-03-14

我正在寻找另一个问题的答案,我找到了这个答案(链接)我只是好奇为什么修改自己的道具是反模式的,为什么修改自己的状态不是反模式的?

共有1个答案

范豪
2023-03-14

在响应中,props是在组件的生命周期中不太可能改变的数据对象,而state是在组件的生命周期中可能改变的数据。

它有助于创建明确的规则,规定开发人员应该将做/不做更改的内容放在哪里。

通过准确地知道数据更改要么严格来自父级(作为道具),要么作为状态在内部进行,快速响应更新页面。

如果状态/道具相同,则精确函数松散地检查,然后https://github.com/facebook/react/blob/master/src/renderers/shared/stack/reconciler/ReactCompositeComponent.js#L881-L883

我建议阅读react如何“协调”数据以进行更改以及如何更新dom。https://facebook.github.io/react/docs/reconciliation.html

 类似资料:
  • 问题内容: 以下是React中的反模式吗?我喜欢这种模式,因为当实例化一个组件时,它在静态函数中为我提供了上下文。然后,我可以导入该类并调用静态方法来修改状态。还是可以通过更好的方式来完成? 问题答案: 显然,这取决于条件,可能是一种反模式,也可能是一个错误。静态类方法不应与类实例一起使用。绑定到特定的组件实例和用途,这只能证明类是单例是合理的(尽管单例也经常是反模式)。如果期望有多个类实例,那么

  • 在react-redux文档中,Dan将clickHandler从容器组件传递给todolist,然后todolist将其作为道具传递给todo。子组件应该在什么级别上拥有自己的连接,以便通过mapDispatchToProps创建clickHandler? 例如,如果todo有自己的mini-todo子项,需要使用与原始todo不同的click处理程序类型,那么该click处理程序是否应该一直在

  • 我在SocketIO的帮助下创建了一个小的ReactJS仪表板,用于实时更新。即使我已经更新了仪表板,但我不太确定我是否做得正确,这让我很困扰。 最让我恼火的是getInitialState中作为反模式POST的道具。我创建了一个从服务器获取实时更新的仪表板,除了加载页面之外,不需要用户交互。根据我所读到的,应该包含决定是否重新呈现组件的内容,而...我还不知道。 但是,当最初调用时,只能传递道具

  • 我正在我的react项目中使用react路由dom V5。我需要通过受保护的路由将道具从应用程序组件(我在其中导入路由器)传递到子组件。问题是道具是空的,没有匹配、位置和历史记录。。 **应用组件 注意:我将道具从应用程序传递到需要使用this.props.match的子组件,但match未定义

  • 问题内容: 我已经在SocketIO的帮助下创建了一个小的ReactJS仪表板,用于实时更新。即使我更新了仪表板,也仍然使我感到不确定我是否正确执行了操作。 最让我感到困扰的是getInitialState中的Props作为反模式发布。我创建了一个仪表板,该仪表板从服务器获取实时更新,除了加载页面外,不需要用户交互。根据我的阅读,应该包含一些内容,这些内容将确定是否应重新渲染该组件,以及....我