gpt4 book ai didi

javascript - 将数组绑定(bind)到状态时出错

转载 作者:行者123 更新时间:2023-12-01 03:58:01 25 4
gpt4 key购买 nike

我正在尝试使用 fetch 从后端获取 json 数据,然后将其放入数组中,并将其显示在屏幕上,目前在控制台日志上。我试图将返回的信息存储在一个名为 data 的数组中,该数组是我在 getinistate 中初始化的,然后在 fetch 调用完成时将 json 数据放入其中。目前我收到的错误是 console.log 基本上是空的。

这是代码。

<body>
<div id="reactBinding"></div>

<script type="text/babel">
var Heading = React.createClass({
getInitialState: function() {
return {
data: [],
amount : 1000
};
},
handleChange: function(event){
this.setState({amount : event.target.value});
},
loadCommentsFromServer: function() {
var value = {
method : 'GET' ,
headers : {
'Accept': 'application/json',
'contentType' : 'application/x-www-form-urlencoded',
},
body : ({
amount : this.state.amount
})
};
fetch('http://localhost:3000/getIOT', value)
.then((response) => response.json())
.then((responseData) =>{
responseData : this.state.data
})
.catch(function(err){
console.log(err);
});
},
showTable : function(){
console.log(data);
},
render : function(){
var amount = this.state.amount;
return(
<div className="container">
<div className="row">
<div classname="col-xs-4 col-xs-offset-4">
<div className="text-center">
<h1>{this.props.name}</h1>
<h2> {amount} </h2>
<input type="text" value={amount} onChange={this.handleChange} />
<button onClick={this.showTable}>Show Table</button>
<button onClick={this.loadCommentsFromServer}> Submit </button>
</div>
</div>
</div>
</div>
);
}
});
ReactDOM.render(
<div>
<Heading
name="React JS"
>
</Heading>
</div>
, document.getElementById('reactBinding'));
</script>
</body>

再说一遍,我想要做的是从 fetch 中获取信息,将其放入名为 data 数组的变量中,然后当有人单击 showTable 时,它应该 console.log 数组输出。 react 是全新的,所以需要一些指导,因为这是我第一次写它。如果这段代码有点太困惑,那么有人可以帮助我展示如何编写一个简单的获取,那就太好了。

此外,如果您有时间,如果有人可以解释如何在表格中显示数组,那就太好了。在 showTable 部分。

最佳答案

收到响应后,您需要使用setState将数据存储在state变量中,如下所示:

fetch('http://localhost:3000/getIOT', value)
.then((response) => response.json())
.then((responseData) =>{
//responseData : this.state.data
this.setState({data: responseData}); // use this line
})

console.log放入render函数中,一旦收到响应,它就会打印数据,如下所示:

render : function(){
var amount = this.state.amount;
console.log('data', this.state.data);
....

更新:

检查工作代码:

var Heading = React.createClass({
getInitialState: function() {
return {
data: [],
amount : 1000
};
},
handleChange: function(event){
this.setState({amount : event.target.value});
},
loadCommentsFromServer: function() {
var value = {
method : 'GET' ,
headers : {
'Accept': 'application/json',
'contentType' : 'application/x-www-form-urlencoded',
},
body : ({
amount : this.state.amount
})
};
fetch('http://localhost:3000/getIOT', value)
.then((response) => response.json())
.then((responseData) =>{
this.setState({data: responseData});
})
.catch(function(err){
console.log(err);
});
},
showTable : function(){
console.log(this.state.data);
},
render : function(){
var amount = this.state.amount;
console.log('data', this.state.data);
return(
<div className="container">
<div className="row">
<div classname="col-xs-4 col-xs-offset-4">
<div className="text-center">
<h1>{this.props.name}</h1>
<h2> {amount} </h2>
<input type="text" value={amount} onChange={this.handleChange} />
<button onClick={this.showTable}>Show Table</button>
<button onClick={this.loadCommentsFromServer}> Submit </button>
</div>
</div>
</div>
</div>
);
}
});
ReactDOM.render(
<div>
<Heading
name="React JS"
>
</Heading>
</div>
, document.getElementById('reactBinding'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id='reactBinding'></div>

关于javascript - 将数组绑定(bind)到状态时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42471484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com