首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReactJs mapStateToProps

ReactJs mapStateToProps
EN

Stack Overflow用户
提问于 2020-02-28 12:14:10
回答 2查看 53关注 0票数 0

我的反应出了点问题。我正在尝试验证用户,并从我的后端获取一些数据,而mapStateToProps是一个小问题。这就是我如何成功地获得唯一的用户:

代码语言:javascript
复制
 const mapStateToProps = ({auth}) => {
  const {authUser} = auth;
  return {authUser}
};

这就是我从api中获取数据的方法,也成功了

代码语言:javascript
复制
const mapStateToProps = (state) => {
  return {
    serversList: state.servers.servers,
  }
}

现在我需要以某种方式组合这个mapStateToProps,我尝试了不同的方法,比如:

代码语言:javascript
复制
 const mapStateToProps = ( state, auth ) => {
        const {authUser} = auth;
        return {
            authUser,
            serversList: state.servers.servers,
        }
    };

在这种情况下,它不对用户进行身份验证。如何将它们结合起来?

这是我的完整代码,没有一些导入:

代码语言:javascript
复制
import { requestServers  } from '../../../appRedux/actions';

const mapStateToProps = ( state, auth ) => {
    const {authUser} = auth;
    return {
        authUser,
        serversList: state.servers.servers,
    }
};


const mapDispatchToProps = (dispatch) => {
return {
  onRequestServers: () => dispatch(requestServers())
}
}


class Dashboard extends Component {


    componentDidMount() {
        this.props.onRequestServers();
      }


    render() {
        const {authUser} = this.props;
        const { serversList } = this.props;


        return (
            <Row>
        <Col xl={12} lg={24} md={12} sm={24} xs={24}>
        <UserInfo userName={authUser ? authUser.name : "Guest"}/>
        </Col>
        <Col xl={12} lg={24} md={12} sm={24} xs={24}>
          <BillingProfile balance={authUser ? authUser.stanje : "0"}/>
        </Col>
            <Col span={24}>
            <Servers />
            </Col >
            </Row>

        );
    }
}

export default connect(mapStateToProps, mapDispatchToProps)(Dashboard)
EN

回答 2

Stack Overflow用户

发布于 2020-02-28 12:20:38

它应该是

代码语言:javascript
复制
const mapStateToProps = (state) => {
    const {authUser} = state.auth;
    return {
        authUser,
        serversList: state.servers.servers,
    }
};

代码语言:javascript
复制
const mapStateToProps = ({servers, auth}) => {
    const {authUser} = auth;
    return {
        authUser,
        serversList: servers.servers,
    }
};

身份验证的第二个参数是ownProps,而不是mapStateToProps。您需要的是从state中提取的auth

票数 2
EN

Stack Overflow用户

发布于 2020-02-28 12:21:47

试一试

代码语言:javascript
复制
const mapStateToProps = ({ auth, servers }) => ({
  authUser: auth.authUser,
  serversList: servers.servers,
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60445158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档