繁体   English   中英

如果您总是可以使用状态数据,为什么还要在反应中使用props?

[英]Why use props in react if you could always use state data?

我知道可以通过两种方式传递组件数据:道具和状态。 但是为什么一个人需要一个国家的支持呢? 似乎状态对象只能在组件内部使用,那么为什么在标记中传递prop参数呢?

道具由父组件在外部设置。 例如;

render() {
    return <ChildComponent someProp={someValue}/>;
}

状态是在内部设置的,通常是由孩子内的用户事件触发的。 例如;

handleUserClickedButton: () {
    this.setState({
        buttonClicked: true
    });
},

render() {
    return <button onClick={this.handleUserClickedButton}/>;
}

因此,道具是数据从父级到子级的一种方式。 状态是在单个组件中管理数据的一种方式,状态可能由子级触发而对该数据进行更改。 实际上,它们表示沿两个相反方向传输的数据,并且它们的传递方式完全是唯一的。

有两种方法可以从组件外部“传递”或访问数据,但state不是其中一种。
两种方式是:
道具 -父组件传递给子组件的道具
上下文 -您可以在树中“跳过”直接父级。

state是一个内部对象,除非您显式传递(通过上述两种方式),否则其他任何组件都无法访问它。

所以基本上您的问题是不准确的,因为您无法真正比​​较两者。
我认为您真正要问的是为什么使用无状态组件而不是有状态组件。
您可以在Stack-overflow或其他网站中找到答案。

编辑
您的一些评论的后续行动。

为什么孩子不仅有共同的状态? 例如,每个组件(或子组件)都可以执行“ this.state”来获取程序的当前状态

  1. 无法共享或访问其他功能中的私有对象的方式相同。
  2. 这是设计使然,您可以明确共享内容,并且只传递组件所需的内容。 例如,看一下此页面上的堆栈溢出,可以说投票按钮是组件,如果只需要投票计数和2个onClick事件侦听器,为什么还要将整个状态传递给它们? 我应该传递当前登录的用户,还是传递该页面中给出的全部答案?

这样就无法在父母与子女之间传递状态? 例如,父母不能更改状态,然后孩子获得新状态

这正是propscontext应该做的,提供了一个API,用于在父母与孩子之间共享数据,尽管我们以一种方式保持数据流(从父母到孩子),但您不能向上传递道具。 但是您调用传递到子组件的处理程序,并通过该处理程序传递数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM