Javascript ReactJS:将状态值设置为数组的正确方法是什么?

Javascript ReactJS:将状态值设置为数组的正确方法是什么?,javascript,node.js,reactjs,fetch-api,Javascript,Node.js,Reactjs,Fetch Api,我有一个使用fetchapi获取用户数据的对象数组。我尝试过构造函数,创建函数,绑定它。它不起作用。我尝试了ComponentDidMount和setState,它返回undefined class Admin extends Component { componentDidMount () { var that = this; fetch('http://localhost:4500/data/users', { metho

我有一个使用fetchapi获取用户数据的对象数组。我尝试过构造函数,创建函数,绑定它。它不起作用。我尝试了ComponentDidMount和setState,它返回undefined

class Admin extends Component {


    componentDidMount () {

        var that = this;
        fetch('http://localhost:4500/data/users', {
            method: 'GET',
            headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
            }
         }).then(function(response) {
             return response.json();
        }).then(function(json){
             console.log(json);
             that.state = {users: json};
        });

    }

    render() {

     return (

        <SpicyDatatable
          tableKey={key}
          columns={columns}
          rows={this.state.users}
          config={customOptions}
        />
       );
    }
}
类管理扩展组件{
组件安装(){
var=这个;
取('http://localhost:4500/data/users', {
方法:“GET”,
标题:{
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json”,
}
}).然后(功能(响应){
返回response.json();
}).then(函数(json){
log(json);
that.state={users:json};
});
}
render(){
返回(
);
}
}

将状态值设置为数组并渲染它的正确方法是什么?谢谢

您应该使用React
setState()
方法

that.setState({ users: json });

首先在构造函数中初始化状态,如下所示

constructor(props) {
        super(props);
        this.state = {users : []} //initialize as array
    }
然后代替
that.state={users:json}使用

that.setState({ users: json });

您已经得到了使用
setState({users:json})
的答案,这是正确的

除了像前面所说的那样初始化数组值之外,还可以根据组件状态进行条件渲染。也就是说,如果用户尚未加载,您可以呈现不同的组件

render() {
   const users = this.state.users;
   return !users ?
      <p>Loading..</p> : 
      <YourComponent users={users} />;
}
render(){
const users=this.state.users;
返回!用户?
正在加载..

: ; }
state对象的可能重复项我认为您不希望在state对象周围加括号。它应该是
this.state={users:[]}
我在记录它时得到数据。下面是示例数据:[{“name”:“Cars45测试”,“email”:test@cars45.com“,”角色“:”超级管理员“,”日期“:”2-7-2017“},{”姓名“:”简·多伊“,”电子邮件“:”janedoe@test.com“,”角色“:”超级管理员“,”日期“:”2017年2月7日“}谢谢abdul。在构造函数中初始化状态是有效的。@Olalekan那么
console.log(json)
在控制台中显示了什么?