Javascript ReactJS:将状态值设置为数组的正确方法是什么?
我有一个使用fetchapi获取用户数据的对象数组。我尝试过构造函数,创建函数,绑定它。它不起作用。我尝试了ComponentDidMount和setState,它返回undefinedJavascript 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
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)
在控制台中显示了什么?