What should i do?, i try many ways to solve this problem but still uncaught type error .push and .map is not function.Please help me solve this ,it will great honor for me.未捕獲的類型錯誤:this.state.Students.push不是函數和this.state.Students.map不是函數
var InsertArray = React.createClass({ getInitialState: function() { return { Students: [], Fname: '', Lname: '', Id: '', } },
render: function() { return ( <div> Firstname: <input type="text" onChange={this.handleFN} value={this.state.value} /> <br /> Lastname : <input type="text" onChange={this.handleLN} value={this.state.value}/> <br /> Student Id: <input type="number" onChange={this.handleId} value={this.state.value} /> <hr /> <button type="Submit" onClick={this.handleClick}>Submit</button> <button type="Submit" onClick={this.handleClickD}>Display</button> <br /> </div> ); }, handleFN : function (value) { this.setState({ Fname: value }); }, handleLn: function (value) { this.setState({ Lname:value }); }, handleId: function (value) { this.setState({ Id: value }) },
//this is where the data will be push into Student array by using push.
handleClick: function (e) { e.preventDefault(); var student = { Fname: this.state.Fname, Lname: this.state.Lname, Id : this.state.Id } this.setState({ `Students: this.state.Students.push(student)` }); },
//And this handleClickD will be read all the data inside array and display.
handleClickD: function (e) { e.preventDefault(); <div> <ul>`{this.state.Students.map(function (stud) { return (<li key={stud.Id}>{stud.Fname}{stud.Lname}` </li>) } )} </ul> </div> } });
ReactDOM.render(, document.getElementById('container'));
回答
的使用推的情況下會是這樣
handleClick: function (e) {
e.preventDefault();
var student = {
Fname: this.state.Fname,
Lname: this.state.Lname,
Id : this.state.Id
}
this.state.Students.push(student)
this.setState({
Students: this.state.students
});
},
但還是明確的方式,concat()
是更好的方式,因爲它的非冗長,且具有較少的線路。
的Array.push將返回數組的新長度,以便之後:
this.setState({Students: this.state.Students.push(student)})
學生將是一個數字不是一個數組。
你能解釋更多的是因爲我是新的,我不明白它的工作方式,謝謝。 –
這意味着push函數可以工作,但只會返回數組內的項數,而不會返回實際的結果。 –
使用的concat:
this.setState({Students: this.state.Students.concat(student)})
我嘗試使用concat,它的工作原理,謝謝但如果我想用推我如何使它工作? –
問題是,array.push
不會返回最終陣列中,它會返回陣列的長度。
檢查這個片段:
let a = [1,2,3,4,5,6];
let b = a.push(10);
console.log('b = ', b); //b = 7 not [1,2,3,4,5,6,10]
爲了解決您發出使用spread operator,並把新的值到數組:
this.setState({
Students: [...this.state.Students, student]
});
選中此有關傳播經營者的詳細信息: What do these three dots in React do?
- 1. 未捕獲的類型錯誤:undefined是不是一個函數
- 2. 未捕獲類型錯誤:undefined不是函數Chrome不工作
- 3. 指數:145未捕獲類型錯誤:map.mapTypes.insertAt不是函數
- 4. 未捕獲類型:未定義不是函數JS錯誤
- 5. 的Javascript:未捕獲的類型錯誤:對象不是函數
- 6. backbone.localStorage,require.js,「未捕獲的類型錯誤:undefined不是函數」
- 7. 未捕獲的類型錯誤:(0,_store.configureStore)不是函數
- 8. 未捕獲的類型錯誤...不是一個函數
- 9. 未捕獲的類型錯誤:(0,_reactRedux.combineReducers)不是函數
- 10. Bootstrap .dropdown()「未捕獲的類型錯誤:undefined不是函數」
- 11. 未捕獲的類型錯誤不是函數
- 12. requireJS「未捕獲的類型錯誤:undefined不是函數」
- 13. 未捕獲的類型錯誤:undefined不是函數 - Javascript
- 14. 未捕獲的類型錯誤:c.color.tweenTo不是函數
- 15. 未捕獲的(以諾)類型錯誤:$不是一個函數
- 16. 未捕獲的類型錯誤:響應不是函數
- 17. 未捕獲類型錯誤:$(...)。datepicker()不是函數
- 18. 未捕獲類型錯誤:fn.call不是函數
- 19. 未捕獲類型錯誤mousewheel不是函數
- 20. 未捕獲類型錯誤:視圖不是構造函數
- 21. 未捕獲(承諾)類型錯誤:spawn不是函數
- 22. 未捕獲類型錯誤:視圖不是構造函數
- 23. jQuery - 未捕獲類型錯誤:字符串不是函數
- 24. 未捕獲類型錯誤:對象不是函數
- 25. 未捕獲類型錯誤:追加不是函數
- 26. 骨幹:未捕獲類型錯誤:..不是構造函數
- 27. 未捕獲的類型錯誤:對象不是函數(匿名函數)
- 28. MooTools的:未捕獲的類型錯誤:未定義是不是一個函數
- 29. 什麼是導致未捕獲的類型錯誤:數量不是函數?
- 30. 未捕獲的類型錯誤:undefined是不是一個函數的JavaScript模塊
你是否曾經初始化狀態? – bmartin
是的,我已經初始化狀態,但仍然在地圖和推送方法中被捕獲錯誤。 –
我還有1個問題地圖()。它不會在用戶點擊顯示按鈕後顯示數據。請幫助我 –