我有一个非常简单的react native屏幕,如下所示:
class BasicScreen extends React.Component {
state = {
data: [],
myItems: [],
};
componentDidMount() {
this.checkforItems();
}
checkforItems = async () => {
AsyncStorage.getItem('MyItems').then(item => {
if (item) {
this.setState({
myItems: JSON.parse(item),
});
} else {
console.log('No data.');
}
});
};
render() {
return (
<View>/* A detailed view */</View>
)
}
}
问题是,它导致以下错误:
Cannot update a component from inside the function body of a different component.
我不确定如何解决此问题。请帮忙。
答案 0 :(得分:0)
这看起来像是要用任何最新映射的myItems
覆盖item
,而不是附加每个新项。
您可以尝试将项目映射到componentDidMount()
中的数组,然后在useEffect
调用中设置状态。
const BasicScreen = () => {
const [myData, setData] = useState([]);
const [myItems, setItems] = useState([]);
const checkForItems = () => {
var storageItems = AsyncStorage.getItem("MyItems").then((item) => {
if (item) {
return JSON.parse(item);
}
});
setItems(storageItems);
};
useEffect(() => {
async function getItems() {
await checkForItems();
}
getItems();
}, []);
return (
<View>
<Text>{myItems[0]}</Text>
</View>
);
};
export default BasicScreen;