我实际使用的方式效果很好,但我的道具却不断增长,我想知道是否可以将它们分组为一个状态并将其传递给孩子,这是我的代码:

    <Panel
      uniqueIDs={uniqueIDs}
      userID={userID}
      loading={loading}
      premium={premium}
      percent={percent}
      total={total}
      until={until}
      user={user}
      done={done}
    />


渲染后,我定义这些变量,如下所示:


  让{正在加载,清空,总计,唯一ID,切片,百分比,直到确定,
  用户,高级,数据,密钥,已完成,用户ID} = this.state;


我可以只发送this.state变量吗?我进行了一些研究,但没有找到解决问题的方法,我知道我可以使用第三方库来管理状态,但是我试图将其保持简单。

最佳答案

是的,您绝对可以将整个状态变量作为多个属性传递给子组件

<Child {...this.state}/>


这将是完全可以接受的。

如果您的状态是{id: 1, name: 2}

您仍然可以通过以下方式访问子组件中的道具

props.id or this.props.id
props.name or this.props.name


注意,您应该对组件重新渲染有所了解。如果您对父组件中的状态进行了许多更新,这也将导致子组件也重新渲染很多,这可能会导致性能问题。

要解决此问题,请确保对类组件采用componentDidUpdate()和对功能组件采用react-hooks之类的方法。这些可以帮助控制重新渲染的流程。

10-04 21:26
查看更多