我想通过api调用获取用户列表并使用数据呈现表格。
目前我可以获取数据但是我尝试显示它,我有一个错误。
我认为在api通话结束之前反应是不明白的。
这是我的代码:
var Actions = Reflux.createActions([
"fetchList"
]);
这是我的商店:
var bannersStore = Reflux.createStore({
users: { data : {}},
listenables: [Actions],
init: function() {
this.fetchList();
},
fetchList: function(){
var self = this;
reqwest({
url: 'http://localhost:9080/api/member.json',
method: 'get',
success: function (resp) {
console.log('fetch complete');
self.users = resp;
self.trigger({users :resp});
}
});
}
});
这是我的React类:
var Users = React.createClass({
getInitialState: function() {
return {users : UsersStore.fetchList()};
},
render: function() {
var usersRows = this.state.users.data.map(function(user, i) {
return (
<tr key={i}>
<td><Link to="user" params={{ id: user.id }}>{user.attributes.firstname + ' ' + user.attributes.lastname}</Link></td>
<td>{user.attributes.email}</td>
<td>{user.status}</td>
<td>{user.language}</td>
</tr>
)
});
return (
<div>
<table className="table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Image</th>
<th>URL</th>
<th>Active?</th>
</tr>
</thead>
<tbody>
{ usersRows }
</tbody>
</table>
</div>
)
}
});
this.state.users.data
没有发现,我有一个错误(未定义)。
感谢您的帮助。
答案 0 :(得分:2)
我会建议这种模式。可以在https://github.com/calitek/ReactPatterns React.14 / ReFluxSuperAgent找到回流模式的一个例子。
getInitialState: function() {
return {users : {data: []}};
},
componentDidMount() {
this.unsubscribe = UsersStore.listen(this.storeDidChange);
Actions.fetchList();
},
componentWillUnmount() { this.unsubscribe(); },
storeDidChange(newData) {
this.setState(newData);
},
&#13;
答案 1 :(得分:1)
您是否希望在请求成功之前冻结UI?
这里发生的是请求是异步执行的。一旦成功,您的success
回调将被触发,这是您可以更新React组件的地方。
我不熟悉Reflux,所以可能有更好的方法,但我的天真方法是:
编写组件时,请注意第一次渲染组件时将没有数据,因此请使代码更安全,
在success
回调中,使用新数据再次渲染组件。
但同样,Reflux可能有一种内置的处理REST的方法,我不知道。