Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React.js与Redux:从状态获取信息_Reactjs_Redux_Store - Fatal编程技术网

Reactjs React.js与Redux:从状态获取信息

Reactjs React.js与Redux:从状态获取信息,reactjs,redux,store,Reactjs,Redux,Store,我正在编写应用程序,但我无法解决任何问题。我已经在状态中存储了用户信息(当我打开Redux DevTools时,我可以看到状态->用户:{用户名:名称,角色:…}) 现在在一些组件中,我想检查登录的用户是admin还是user。我有它在那种状态下,但是我怎样才能在某个类中加载它呢?导出函数时,我可以使用constuserrole=useSelector(state=>state.security.user.role\u id)但在类中它会产生问题。你能帮我吗 这是我的用户类代码,仅当用户是管理员

我正在编写应用程序,但我无法解决任何问题。我已经在状态中存储了用户信息(当我打开Redux DevTools时,我可以看到状态->用户:{用户名:名称,角色:…})

现在在一些组件中,我想检查登录的用户是admin还是user。我有它在那种状态下,但是我怎样才能在某个类中加载它呢?导出函数时,我可以使用
constuserrole=useSelector(state=>state.security.user.role\u id)但在类中它会产生问题。你能帮我吗

这是我的用户类代码,仅当用户是管理员时,我想显示“删除”按钮:

import React, {Component} from "react";
import PropTypes from "prop-types";
import {connect, useSelector} from "react-redux";
import { Link } from "react-router-dom";
import { deleteUser } from "../../store/actions/userActions";

class User extends Component{
    constructor() {
        super();}

    onDeleteClick(id) {
        this.props.deleteUser(id);
    }



    render() {

        const { user } = this.props;
        return (
            <div className='row entry'>
                <div className='col-sm-2'>
                    <span >{user.username}</span>
                </div>
                <div className='col-sm-2'>
                    <span >{user.name}</span>
                </div>
                <div className='col-sm-2'>
                    <span>{user.lastname}</span>
                </div>
                <div className='col-sm-2'>
                    <span>{user.tag}</span>
                </div>
                <div className='col-sm-1'>
                    <span>{user.pay}</span>
                </div>
                <div className='col-sm-1'>
                    <span>
                    {user.role_id}

                    </span>
                </div>
                <div className='col-sm-2'>
                    <Link to={`userlist/edituser:${user.id}`}>
                        <button><i className="fas fa-user-edit"></i></button>
                    </Link> | <button onClick={this.onDeleteClick.bind(this, user.id)}><i className="far fa-trash-alt"></i></button>

                </div>

            </div>
        )
    }


}


User.propTypes = {
    deleteUser: PropTypes.func.isRequired
};



export default connect(
    null, { deleteUser }
)(User);
import React,{Component}来自“React”;
从“道具类型”导入道具类型;
从“react-redux”导入{connect,useSelector};
从“react router dom”导入{Link};
从“../../store/actions/userActions”导入{deleteUser}”;
类用户扩展组件{
构造函数(){
超级();}
单击(id){
this.props.deleteUser(id);
}
render(){
const{user}=this.props;
返回(
{user.username}
{user.name}
{user.lastname}
{user.tag}
{user.pay}
{user.role_id}
| 
)
}
}
User.propTypes={
deleteUser:PropTypes.func.isRequired
};
导出默认连接(
null,{deleteUser}
)(用户);

对于类组件,您可以使用
连接
HOC和
mapstatetrops
从redux访问状态

class User extends Component{

    render() {

        const { user, userRole } = this.props;
        ...

    }
}



const mapStateToProps = (state) => {
   return {
       useRole: state.security.user.role_id,
   }
}

export default connect(
    mapStateToProps, { deleteUser }
)(User);

你的问题不清楚。问题出在哪里?你应该使用Redux的connect()来连接你的组件和store Redux,你做到了吗?我已经编辑了这个问题