当前位置: 首页 > 面试题库 >

React中state和props有什么区别?

翟弘
2023-03-14
问题内容

我正在观看有关React的Pluralsight课程,并且讲师指出,不应更改道具。我现在正在阅读有关道具与状态的文章(uberVU / react-guide),它说

道具和状态更改都会触发渲染更新。

文章稍后会说:

道具(属性的缩写)是组件的配置,如果可以的话,可以选择它的选项。它们是从上方接收的,并且是不变的。

  • 所以道具可以改变,但它们应该是不变的?
  • 什么时候应该使用道具,什么时候应该使用状态?
  • 如果您有React组件需要的数据,是否应该通过prop或在React组件中通过setup进行设置getInitialState

问题答案:

道具和状态有关。一个组件的状态通常会成为子组件的道具。道具将作为第二个参数传递给父对象的render方法中的子对象,React.createElement()或者,如果您使用的是JSX,则是更熟悉的标签属性。

<MyChild name={this.state.childsName} />

父项的状态值childsName成为子项的状态值this.props.name。从孩子的角度来看,prop这个名字是一成不变的。如果需要更改,则父级只需更改其内部状态即可:

this.setState({ childsName: 'New name' });

React将为您将其传播给孩子。接natural而来的自然问题是:如果孩子需要更改道具名称该怎么办?通常,这是通过子事件和父回调完成的。子级可能会公开一个名为的事件onNameChanged。然后,父级将通过传递回调处理程序来订阅事件。

<MyChild name={this.state.childsName} onNameChanged={this.handleName} />

子级将通过调用例如,将其请求的新名称作为参数传递给事件回调this.props.onNameChanged('New name'),而父级将在事件处理程序中使用该名称来更新其状态。

handleName: function(newName) {
   this.setState({ childsName: newName });
}


 类似资料:
  • 问题内容: 我正在观看有关React的Pluralsight课程,并且讲师说不应更改道具。我现在正在阅读有关道具与状态的文章(uberVU / react- guide) ,它说 道具和状态更改都会触发渲染更新。 文章稍后会说: 道具(属性的缩写)是组件的配置,如果可以的话,它是选项。它们是从上方接收的,并且是不变的。 所以道具可以改变,但它们应该是不变的? 什么时候应该使用道具,什么时候应该使用

  • 本文向大家介绍react组件的state和props两者有什么区别?相关面试题,主要包含被问及react组件的state和props两者有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 State 是一种数据结构,用于组件挂载时所需数据的默认值。State 可能会随着时间的推移而发生突变,但多数时候是作为用户事件行为的结果。 Props(properties 的简写)则是组件的配置。prop

  • 问题内容: 当是重要的传球到了,为什么? 问题答案: 只有一种原因需要传递给: 当您要在构造函数中访问时。 通过: 未通过: 注意,通过或不通过,以有 没有影响 对以后的用途之外。也就是说,或事件处理程序 始终 可以访问它。 这是索菲·阿尔珀特(Sophie Alpert)对类似问题的回答中明确指出的。 建议使用“ 状态和生命周期,将本地状态添加到类,第2点”中的文档: 类组件应始终使用调用基本构

  • 本文向大家介绍React Native和React有什么区别?相关面试题,主要包含被问及React Native和React有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 主要是底层 renders 层不同,React 使用的是 Visual DOM,React Native 替换成了native 组件。

  • 问题内容: 我已经出于好奇而开始学习 React ,并且想知道React和React Native之间的区别- 尽管使用Google找不到满意的答案。React和React Native似乎具有相同的格式。它们的语法完全不同吗? 问题答案: ReactJS是一个JavaScript库,它支持前端Web并在服务器上运行,用于构建用户界面和Web应用程序。它遵循可重用组件的概念。 React Nati

  • 来自世博会网站 Expo让web开发人员只需用JavaScript编写一次,就可以构建真正的原生应用程序,在iOS和Android上都能工作。 这不就是React Native做的吗?有什么不同吗?