[英]react state array object is not accessible in render() method
嗨,我有一個比較棘手的問題,我可以訪問狀態對象的屬性ooPP
,但不能訪問狀態對象的屬性data
。 唯一的區別是它們的填充方式。
state.ooPP
是硬編碼的 state.data
。 我可以在react native dev tools
看到state.data
值作為帶有一個元素的數組,但是為什么render()
this.state.data
null?
這是代碼:
export default class HomeScreen extends Component {
_retrieveData = async key => {
try {
const value = await AsyncStorage.getItem(key);
if (value !== null) {
// We have data!!
console.log("yay....", value);
return value;
}
} catch (error) {
// Error retrieving data
}
};
getAllKeys = async () => {
let keys = [];
try {
keys = await AsyncStorage.getAllKeys();
} catch (e) {
// read key error
}
return keys;
};
constructor(props) {
super(props);
this.state = {
data:[],
kk:'oo',
ooPP:[{'username':'uuuuu'}]
}
this.getAllKeys().then(keys => {
var promises = keys.map(key => {
return this._retrieveData(key)
.then(value => {
console.log(value, "xx");
return JSON.parse(value);
})
.catch(error => {
//
});
});
Promise.all(promises)
.then(results => {
this.state.data=results
})
.catch(e => {
//
});
});
}
renderSeparator = () => {
return (
<View
style={{
height: 1,
backgroundColor: "#CED0CE"
}}
/>
);
};
render = () => {
return (
<View>
<FlatList
data={this.state.data} //-------> this is not accessible
ItemSeparatorComponent={this.renderSeparator}
renderItem={({ item }) => (
<TOTPItem value={item.username} time={(20 / 30) * 100} />
)}
/>
<Text>dd {this.state.kk}</Text>
</View>
);
}
}
Promise.all(promises)
.then(results => {
this.setState({data: results});
})
.catch(e => {
//
});
});
您需要使用setState
更新狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.