Я работаю над собственным приложением реагирования, использую Basi c Redux для управления состоянием и начинающим к этому. В этой конкретной задаче c Я получаю данные из моего магазина Redx на экране редактирования, где у меня также есть опция для обновления данных
import React,{useState,useEffect,useCallback} from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { View,Text,StyleSheet,ScrollView,TextInput} from 'react-native';
import {Item, HeaderButtons} from 'react-navigation-header-buttons';
import HeaderButton from '../../components/UI/HeaderButton';
import * as productActions from '../../store/actions/products';
const EditProductScreen= ({navigation}) => {
const prodId= navigation.getParam('productId');
const editedProduct= useSelector(state => state.product.userProducts.find(prod => prod.id === prodId));
const dispatch= useDispatch();
const [title,setTitle]=useState(editedProduct ? editedProduct.title : '');
const [imageUrl,setImageUrl]=useState(editedProduct ? editedProduct.imageUrl : '')
const [price,setPrice]=useState(editedProduct ? editedProduct.price : '');
const [description,setDescription]=useState(editedProduct ? editedProduct.description : '');
const submitHandler = useCallback(() =>{
if(editedProduct){
navigation.navigate({routeName:'UserProducts'});
dispatch(productActions.updateProduct(prodId,title,imageUrl,description));
}else{
dispatch(productActions.createProduct(title,imageUrl,description, +price));
}
},[dispatch,prodId,title,imageUrl,description,price]);
useEffect(()=>{
navigation.setParams({submit:submitHandler});
},[submitHandler]);
, но как только обработчик отправки выполнен и диспетчеризация действия заканчивается, когда экран перерисовывается, извлечение данных из приведения не работает!
const editedProduct= useSelector(state => state.product.userProducts.find(prod => prod.id === prodId));
он дает эту ошибку - , но сначала без диспетчерского действия этот код работает отлично. Нужно решить это, любые предложения ???? мое обновление редуктор-
case UPDATE_PRODUCT:
const productIndex=state.userProducts.findIndex(prod => prod.id===action.pid);
console.log(state.userProducts[productIndex].price);
const updatedProduct= new Product(
action.pid,
state.userProducts[productIndex].ownerId,
action.productData.title,
action.productData.imageUrl,
action.productData.description,
state.userProducts[productIndex].price
);
const updatedUserProducts= {...state.userProducts};
updatedUserProducts[productIndex]=updatedProduct;
const availableProductIndex=state.availableProducts.findIndex(prod => prod.id===action.pid);
const updatedAvailableProducts= {...state.availableProducts};
updatedAvailableProducts[availableProductIndex]=updatedProduct;
return{
...state,
userProducts:updatedUserProducts,
availableProducts:updatedAvailableProducts
};