我理解了OOP语言中的构造函数概念,如C++.然而,我并不完全确定在REACT中何时使用构造函数.我确实理解JavaScript是面向对象的,但我不确定构造函数实际上在"构造"什么.

呈现子组件时,子组件中是否需要构造函数?例如:

class App extends React.Component {
   constructor(props) {
      super(props);
      this.state = {
         items: [],
         error: null
      }
    }
    render () {
       return (
          <React.Fragment>
             <ChildComponent data={this.state.items}></ChildComponent>
          </React.Fragment>
       )
    }
}

为了简洁起见,我将把这个例子保持简短.但是,你为什么需要一个构造函数呢?您是否需要在子组件中为props 设置构造函数?

有可能我的ES6知识不符合要求.

推荐答案

If you don’t initialize state and you don’t bind methods, you don’t need to implement a constructor for your React component.

React组件的构造函数在安装之前被调用.在实现React的构造函数时.组件子类,您应该在调用任何其他语句之前调用super(props).否则的话,这个.props 将在构造函数中未定义,这可能会导致错误.

通常,in-React构造函数仅用于两个目的:

  • 通过将对象分配给本地状态来初始化本地状态.状态
  • 将事件处理程序方法绑定到实例.

https://reactjs.org/docs/react-component.html#constructor

React-native相关问答推荐

REACT-Native-Render-html中所有文本的默认字体大小

1.5.1 nxworkspace+react-native 版本的Axios url未定义问题

在 React Native 中,水平滚动不适用于我的整个应用程序

react native 如何更新倒置平面列表的数组中的项目

如何在react native 中将选定的自定义复选框数据发送到下一页?

为什么将字符串写入文件然后将相同的文件作为字符串读取会导致不同的字符串?

Eslint 错误,configuration for rule "import/no-cycle" is invalid

为应用创建单个 MobX store 的最佳方式是什么?

使用 AsyncStorage 如何以及在何处保存整个 redux 存储

为了回调 URL 的目的,在 Expo 中运行的 React Native 元素的 info.plist 在哪里?

React-Native Android - 找不到 com.android.tools:common

请求的体验使用 Expo SDK v(null),但此 Expo Client至少需要 v23.0.0版本

React native base headers for ios not found

创建新的 react-native 元素时出现Unexpected token import错误

React Native:如何将文件拆分为多个文件并导入它们?

如何在 React Native 中禁用图像淡入效果?

如何在 React Native 中从底部滑入和滑出

Gradlew bundleRelease 不会在 react-native 中生成发布 apk

手动调用 React.PropTypes 验证 React native "^0.30.0"

/bin/sh: adb: 找不到命令