数组推送在反应应用程序中无法正常工作

时间:2017-01-19 04:42:13

标签: javascript reactjs mobx-react

在我的React应用程序中,我使用MobX进行状态管理。处理完ajax响应后,我尝试push进行存储。但事实证明它只是没有按预期工作。代码如下:

export class Diary {
    @observable loaded = false;
    @observable posts = [];

    @action getPosts() {
        axios({
            method: 'get',
            url: '/api/diary/',
            headers: {'Authorization': "JWT " + sessionStorage.getItem('token')}
        }).then(action('response action', (response) => {
            (response.data).map(function (post) {
                let hiren = [];
                hiren['id'] = post['id'];
                hiren['title'] = Crypt.decrypt(post['title'], key, post['iv']);
                hiren['content'] = Crypt.decrypt(post['content'], key, post['iv']);
                hiren['tag'] = post['tag'];
                hiren['date'] = moment.utc(post['date']).local().format("dddd, DD MMMM YYYY hh:mm:ss A");

                this.posts.push.apply(this.posts, hiren);
                console.log(toJS(this.posts)); // empty array so the push is not working
            }.bind(this));
            this.loaded = true;
        })).catch(function(err) {
            console.error(err);
        });
    }
}

1 个答案:

答案 0 :(得分:2)

根据您当前的代码。
1. 地图不理想,使用 forEach 来迭代元素
2.关联数组是对象{} ,而不是 array [] 。因此var date = DateTime.ParseExact( read["DateOfBirth"], "MM/dd/yyyy", CultureInfo.InvariantCulture); txtDOB.Text = date.ToString();
3.要推入数组,只需直接调用数组hiren = {};

this.posts.push(hiren);