在React/React Native中使用构造函数与state = {}有什么区别?

Dav*_*han 6 javascript reactjs react-native

我见过两者

export default class LoginScreen extends React.Component {
  constructor(props){
    super(props);
    this.state = {
      loading: false,
      loggedIn: false,
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

和

export default class LoginScreen extends React.Component {
  state = {
    loading: false,
    loggedIn: false,
  }
}
Run Code Online (Sandbox Code Playgroud)

两者的用例是什么?有优点/缺点吗?这是一个更好的做法吗?

Piy*_*cha 11

如果要将props数据保存到,请使用构造函数state

export default class LoginScreen extends React.Component {
  constructor(props){
    super(props);
    this.state = {
      loading: props.loading,
      loggedIn: props.loggedIn,
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

否则,您可以直接设置state硬编码数据

export default class LoginScreen extends React.Component {
  state = {
    loading: false,
    loggedIn: false,
  }
}
Run Code Online (Sandbox Code Playgroud)