0
我正在使用React(帶Redux)和Parse構建一個簡單的Todo應用程序。我遇到了一個認識異步加載對象的嚴重問題。Reactjs與Parse.com異步加載錯誤?無法訪問對象
情況#1:
var todos = this.props.todos;
console.log(todos) // I see [{TodoClass} {TodoClass}]
console.log(todos[0]) // I see {id: "xyz123", content: "hello world"}
情況#2:
var todos = this.props.todos;
console.log(todos) // I see []
console.log(todos[0]) // undefined
console.log(todos[0].id) // error; can't access id
重點 - 在服務器待辦事項是填充;我不想訪問空數組,但通過添加訪問.id
,todos數組變爲空。
我被卡住了。當我嘗試訪問「id」時,我懷疑加載順序的變化,但我不知道如何修復它。請提出修復建議。任何幫助是極大的讚賞。
TodoClass.js:
function TodoClass(id, content) {
this.id = id;
this.content = content;
}
export default TodoClass
通過使用分析查詢發現()的承諾,我在TodoClass實例中的數據和存儲映射每個解析分貝的「行」,以及數據存儲。我看到Redux viewer正確更新。
這是我加載它,TodoList.jsx:
var TodoList = React.createClass({
render: function() {
var todos = this.props.todos; <-- Array of TodoClass instances
var renderData =() => {
console.log(todos)
console.log(todos[0])
//console.log(todos[0].id) <-- Gives me issues.
var elements = [];
for (var i = 1; i< 5; i++) {
elements.push(<BrowseItem key={i} todo={todos[i]}/>)
};
return elements;
};
return (
<div > {renderData()} </div>
);
}
});
export default connect((state) => {return state})(TodoList);
基本上,如果我「註釋掉」的最後一行'控制檯。日誌(todos [0] .id)'那麼現在我會看到在#1情況下看到的所有內容。 db數據沒有任何變化,所以我有3個解析元素。我不是試圖訪問空數組;當嘗試訪問'.id'時,某種程度上數組變爲空。 console.log()的第三行影響第一個和第二個。 – jbro
請注意,如果您異步加載,第一次渲染組件時,它可能會看到一個空數組,然後纔會使用加載的待辦事項進行更新。它不會以某種方式變成「空的」,它在第一次運行時總是空的。第二個片段拋出錯誤,並且在數組填充時不會更新。 –
感謝您澄清。是的,這是我想解決的問題。它正在異步運行。如果您知道解決此問題的方法,請提出建議。 – jbro