组件使用不同的道具

时间:2019-11-16 15:00:16

标签: reactjs react-native react-redux components redux-thunk

如果我在AuthLoadingScreen的componentDidMount中使用isLoggedIn(),则操作可以成功完成,但是我无法从另一个组件访问state.auth,显示初始状态。

示例如下:

import { connect } from 'react-redux'
import { isLoggedIn } from '../src/actions/authActions'

class AuthLoadingScreen extends React.Component {  
  componentDidMount(){
    this.props.isLoggedIn()
  }

  render() {
    return (
      <View style={styles.container}>
        <ActivityIndicator />
        <StatusBar barStyle="default" />
      </View>
    );
  }
}

export default connect(null, { isLoggedIn })(AuthLoadingScreen)

通过这种方式,状态返回为另一个组件上的初始状态。像这样:

const mapStateToProps = state => {
  const { user } = state.auth

  return {
    user,
  }
}

export default connect(mapStateToProps, {startChat, leaveChat, onSend})(Chat)

但是,如果我将渲染功能置于“ im”状态,则可以从另一个组件成功达到相同状态。

  render() {
    this.props.isLoggedIn()
    ...
    ...
  }

-调试器屏幕截图-

If i call isLoggedIn action below render() debugger like this

If i call isLoggedIn action below componentDidMount() debugger like this

type_login_success doesnt show in debugger's default instance. But if i change second instance as manuel shows here alone.

另一种效果不佳的解决方案是:

  componentDidMount(){
    setTimeout(()=>this.props.isLoggedIn(), 100)
  }

我如何正确使用?对不起我的英语不好。谢谢。

0 个答案:

没有答案