Reactjs 将嵌套数组项添加到Redux存储时未定义this.props.onPress(行)
我已经让我的Reactjs 将嵌套数组项添加到Redux存储时未定义this.props.onPress(行),reactjs,redux,react-redux,Reactjs,Redux,React Redux,我已经让我的React Native应用程序运行Redux,正在尝试向我的商店添加嵌套数组项(产品) 屏幕应该如何工作 productScreen中的数据是从上一个 屏幕(所选产品) 循环遍历数据,找到嵌套数组并将其显示在FlatList 将所选产品添加/删除到购物车(redux) 什么工作 productScreen中的数据是从上一个 屏幕(所选产品) 循环遍历数据,找到嵌套数组并将其显示在FlatList 不起作用的是: 将所选产品添加/删除到购物车(redux) 当我导航到屏幕时,我得到的
React Native
应用程序运行Redux
,正在尝试向我的商店添加嵌套数组项(产品)
屏幕应该如何工作
productScreen
中的数据是从上一个
屏幕(所选产品)FlatList
productScreen
中的数据是从上一个
屏幕(所选产品)FlatList
<FlatList
style={styles.listContainer}
data={this.state.filteredProducts}
renderItem={this.renderItem}
keyExtractor={(item, index) => index.toString()}
/>
Store.JS
import {createStore} from 'redux';
import cartItems from '../reducers/carItems';
export default store = createStore(cartItems)
const cartItems = (state = [], action) => {
switch (action.type)
{
case 'ADD_TO_CART':
// console.log('CarItems.JS', action.payload)
if (state.some(cartItem => cartItem.id === action.payload.id)) {
// increase qty if item already exists in cart
return state.map(cartItem => (
cartItem.id === action.payload.id ? { ...cartItem, qty: cartItem.qty + 1 } : cartItem
));
}
return [...state, { ...action.payload, qty: 1 }]; // else add the new item to cart
case 'REMOVE_FROM_CART':
return state
.map(cartItem => (cartItem.id === action.payload.id ? { ...cartItem, qty: cartItem.qty - 1 } : cartItem))
.filter(cartItem => cartItem.qty > 0);
}
return state
}
export default cartItems
cartItems.JS
import {createStore} from 'redux';
import cartItems from '../reducers/carItems';
export default store = createStore(cartItems)
const cartItems = (state = [], action) => {
switch (action.type)
{
case 'ADD_TO_CART':
// console.log('CarItems.JS', action.payload)
if (state.some(cartItem => cartItem.id === action.payload.id)) {
// increase qty if item already exists in cart
return state.map(cartItem => (
cartItem.id === action.payload.id ? { ...cartItem, qty: cartItem.qty + 1 } : cartItem
));
}
return [...state, { ...action.payload, qty: 1 }]; // else add the new item to cart
case 'REMOVE_FROM_CART':
return state
.map(cartItem => (cartItem.id === action.payload.id ? { ...cartItem, qty: cartItem.qty - 1 } : cartItem))
.filter(cartItem => cartItem.qty > 0);
}
return state
}
export default cartItems
看起来您正在将函数调用的结果传递到TouchableOpacity的onPress道具中 你可能想试着改变一下
到
this.props.onPress(行)}>
正如您在第二种情况下所做的。看起来您正在将函数调用的结果传递到TouchableOpacity的onPress属性中 你可能想试着改变一下
到
this.props.onPress(行)}>
正如您在第二个案例中所做的。嗨,丹尼尔,谢谢您的回答。当我按下按钮时,似乎仍然会出现同样的错误。听起来onPress道具可能未定义。你是不是打算改打addItemToCart/removeItem?请注意,
this.props.onPress
指的是屏幕上的道具组件,而不是视图组件。嗨,丹尼尔,谢谢你的回答。当我按下按钮时,似乎仍然会出现同样的错误。听起来onPress道具可能未定义。你是不是打算改打addItemToCart/removeItem?请注意,this.props.onPress
指的是屏幕组件上的道具,而不是视图组件。