最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - ReactJS: What is the correct way to set a state value as array? - Stack Overflow

programmeradmin0浏览0评论

I have an array of object that get users data using fetch API. I have tried constructor, create a function, bind it. It didn't work. I tried ComponentDidMount and setState, it returns undefined.

class Admin extends Component {


    ponentDidMount () {

        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}
        />
       );
    }
}

What is the correct way to set a state value as array and render it? Thanks

I have an array of object that get users data using fetch API. I have tried constructor, create a function, bind it. It didn't work. I tried ComponentDidMount and setState, it returns undefined.

class Admin extends Component {


    ponentDidMount () {

        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}
        />
       );
    }
}

What is the correct way to set a state value as array and render it? Thanks

Share Improve this question edited Aug 16, 2017 at 12:12 Paul Fitzgerald 12.1k4 gold badges45 silver badges57 bronze badges asked Aug 16, 2017 at 12:06 OlalekanOlalekan 4756 silver badges22 bronze badges 1
  • 3 Possible duplicate of reactjs how to update state – Mayank Shukla Commented Aug 16, 2017 at 12:09
Add a ment  | 

3 Answers 3

Reset to default 4

First initialize your state in your constructor like this

constructor(props) {
        super(props);
        this.state = {users : []} //initialize as array
    }

Then instead of that.state = {users: json}; set your state using

that.setState({ users: json });

You should use the React setState() method.

that.setState({ users: json });

You already got the answer to use setState({ users: json }), which is right.

As an alternative to initializing the array value like abul said, you could also do a conditional render, depending on the ponent state. I.e you can render a different ponent if the users aren't loaded yet.

render() {
   const users = this.state.users;
   return !users ?
      <p>Loading..</p> : 
      <YourComponent users={users} />;
}
发布评论

评论列表(0)

  1. 暂无评论