React 'this' undefined when adding table row
我正在尝试向表中添加新的数据行,当用户在字段中输入文本并单击按钮时会出现这种情况。
单击按钮与一个函数 (AddNewRow) 相关联,该函数将数据发送到控制器,然后将新行添加到包含数据的表中。
数据被正确发送到控制器,如果页面被刷新,新行就会显示(因为挂载后的 get 请求),但问题是表没有动态更新。
我在 AddNewRow 函数中不断收到控制台错误提示"这是未定义的"。
我尝试使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | class App extends React.Component { constructor() { super(); this.state = { tableData: [{ }], }; } componentDidMount() { axios.get('/Jobs/GetJobs', { responseType: 'json' }).then(response => { this.setState({ tableData: response }); }); } AddNewRow(){ axios.post('/Controller/CreateJob', { Name: this.refs.NewJobName.value}) .then(function (response){ if(response.data.Error) { window.alert(response); } else { var data = this.setState.tableData; this.setState.tableData.push(response); this.setState({ tableData: data }); } })} render() { const { tableData } = this.state; return ( <button onClick={() => this.AddNewRow()} >ADD</button> <input ref="NewJobName" type="text" placeholder="Name" /> <ReactTable data={tableData} /> ) } |
使用箭头函数使
1 2 3 4 5 6 7 8 9 10 11 | axios .post('/Controller/CreateJob', { Name: this.refs.NewJobName.value }) .then((response) => { if (response.data.Error) { window.alert(response); } else { this.setState(prevState => ({ tableData: prevState.tableData.concat([response]) })); } }); |