Итак, когда я нажимаю на кнопку «Добавить в корзину» на Screen2, она записывает articleToCart или корзину «Артикул» как пустой массив ... Только когда я возвращаюсь на Screen1 и затем снова на Screen2, снова нажимаю кнопку «Добавить в корзину».регистрирует массив cartArticle с одним элементом, даже если кнопка «Добавить в корзину» была нажата 2 раза ... Как я могу сделать так, чтобы при нажатии кнопки «Добавить в корзину» он немедленно обновлял состояние?Что я делаю неправильно?Я использую реагирующую навигацию v2.Можно ли установить минимальные и минимальные параметры с задержкой?
class Screen1 extends Component {
state = {
articles: {
article: [],
},
cartArticle: []
};
articleToCart = () => {
this.setState(prevState => {
return {
cartArticle: prevState.cartArticle.concat(prevState.articles.article)
};
});
};
qrCodeOnReadHandler = ({ data }) => {
fetch(data)
.then(response => response.json())
.then(json => [
console.log(json),
this.setState({
...this.state,
articles: {
...this.state.articles,
article: json[0],
}
}),
this.props.navigation.navigate("Screen2", {
addToCartOnPress: () => this.articleToCart(),
articleToCart: this.state.cartArticle,
})
])
.catch(err => {
alert("Nesto ne valja. Pokusajte ponovo!");
console.log(err);
});
};
render() {
return (
);
}
}
Второй экран
class Screen2 extends Component {
addToCartHandler = () => {
const { navigation } = this.props;
const articleToCart =navigation.getParam("articleToCart","Nedostupno");
const add = navigation.getParam("addToCartOnPress", "Nedostupno");
console.log(articleToCart);
add();
};
goBackHandler = () => {
this.props.navigation.goBack();
};
render() {
return (
<View style={styles.buttons}>
<CustomButton color="#1DA1F2" onPress={this.goBackHandler}>
Back
</CustomButton>
<CustomButton color="#1DA1F2" onPress={this.addToCartHandler}>
Add to Cart
</CustomButton>
);
}
}