gpt4 book ai didi

react-native - 在 React-Native 中使用 AsyncStorage 更新状态的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-02 04:01:56 26 4
gpt4 key购买 nike

我正在尝试向服务器发出 GET 请求以检索 JSON 格式的产品列表。然后我想将数据放入 AsyncStorage 以便我可以在 View 中显示产品。执行此操作的正确方法是什么?

我研究过的内容:

关于 https://facebook.github.io/react-native/docs/asyncstorage.html ,在示例中,他们解释了如何从 AsyncStorage 中检索一个值,而不是同时设置它和检索它

我有什么:

componentDidMount () {
this.fetchProducts()
this._loadInitialState().done();
}

_loadInitialState = async () => {
try {
var value = await AsyncStorage.getItem('products')
if (value != null) {
this.setState({products: value});
}
} catch (error) {
console.log("error setting product list");
}
}

fetchProducts() {
fetch("http://localhost:3000/products",{
method: "GET",
headers: {
'Content-Type': 'application/json'
},
})
.then((response) => (response.json()))
.then((data) => setProductList(data));

}

setProductList(json_data) {
Async.setItem('products': json_data);
}

render() {
console.log(this.state.products)
//render view
}

-> this.state.products 为空,我确定服务器通过 curl 返回响应。我是 react-native 的新手,所以也许我的想法不对。有人可以解释执行此操作的正确方法或建议替代方法吗?

我所知道的异步存储是应用程序可以放置其数据的键值存储。可以将此数据从异步存储放入对象的状态,并且 View 将相应地更新

最佳答案

无需设置异步存储并从中获取,您只需在从提取请求中获取数据后将其设置为状态即可:

componentDidMount () {
this.fetchProducts()
}

fetchProducts() {
fetch("http://localhost:3000/products",{
method: "GET",
headers: {
'Content-Type': 'application/json'
},
})
.then((response) => (response.json()))
.then((data) => setProductList(data));

}

setProductList(json_data) {
this.setState({ products: json_data }, () => { //Here
Async.setItem('products': json_data);
}
}

render() {
console.log(this.state.products)
//render view
}

关于react-native - 在 React-Native 中使用 AsyncStorage 更新状态的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41495412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com