javascript - React-Native:仅在下一个动作/重新渲染时影响视图的状态变化?
问题描述
我有一个组件,用户可以在其中将商品添加到他们的购物车中,在每个商品旁边显示一个加号图标(添加)或购物车中该类型的商品数量(chosenProducts 状态变量),添加商品效果很好但是由于某种原因,项目计数仅在添加下一个项目后更新,而不是立即“反应”到添加的项目......
摘要:添加项目后,项目计数 UI 不会更新,在添加下一个项目后更新(无论是什么项目。
const [ chosenProducts, setChosenProducts ] = useState([]);
const [ chosenProductIds, setChosenProductIds ] = useState([]);
const [ data, setData ] = useState([ {id:1}, {id:2}, {id:3}, {id:4}, {id:5}, {id:6} ]);
const showProductCount = (item) =>
{
let finds = _.filter(chosenProductIds, id => id == item.id);
if(finds.length > 0)
{
return (<Text style={{ fontSize:16,color:'white' }}>{finds.length}</Text>);
}
else
{
return (<MaterialCommunityIcon name="plus" style={{ color:'white', fontSize:22 }}/>)
}
};
const addItem = (product) =>
{
var copy = [...chosenProducts];
copy.push(product);
var chosenProductId = _.map(chosenProducts, product => product.id);
setChosenProducts(copy);
setChosenProductIds(chosenProductId);
}
<FlatList showsVerticallScrollIndicator={false} style={{ flex:1}} vertical={true} data={data} keyExtractor={item => item.id.toString()}
renderItem={({ item, index }) =>
(<TouchableOpacity onPress={ ()=>{ addItem(item) } } style={{ width:'15%',flexDirection:'column',alignItems:'center'}}>
<View style={{ width:35,height:35,borderRadius:5,backgroundColor:'rgb(3,91,150)',flexDirection:'column',alignItems:'center',justifyContent:'center' }}>
{showProductCount(item)}
</View>
</TouchableOpacity>)
}
/>
是因为我使用一个函数来返回 JSX 而不是 JSX 本身内部的条件渲染吗?
解决方案
推荐阅读
- curl - curl请求后没有输出
- html - Bootstrap 4:文本居中和左对齐?
- powerbi - 如何在 Power BI 中的页面级别限制日历表
- c - xmlUnlinkNode 未从 xml 文件中删除子节点
- c - 从 glib/gtk 中的单独线程发出信号
- r - 计算每行的分位数后如何选择行?
- python - RabbitMQ - Python/Pika 如何知道队列是否为空?
- android - 如何在检索数据时访问 firebase 中的未知节点?
- angular - How can I show my own text status before i switch my toggle button while using mat-slide-toggle
- django-models - django模型一对多保存失败