javascript - 条件检查后未显示 Jsx 组件
问题描述
问题是我有两个 redux 商店
items(Items Store
quotationItems(Quote Items
.
当一个产品项目被添加到quotationItems
我会显示<RedButton title="Remove" />
或当它quotationItems
为空时,<AddButton title="Add" />
应该显示。
usingif
语句往往会重新渲染组件并添加新组件,例如:在报价项目中添加新产品后<AddButton />
,FlatList 组件中会有一个新的。
interface IProps {
items: ItemInterface[];
documentItems: ItemInterface[];
onAddItem: any;
}
const ItemFlatList2: FC<Partial<IProps>> = ({
items,
documentItems,
onAddItem,
}) => {
const TestView = (itemCode) => {
documentItems.map((x) => {});
};
return (
<FlatList
data={items}
keyExtractor={(item) => item.itemCode.toString()}
renderItem={({
item: { itemCode, itemDescription, itemSellingPrice },
}) => {
return (
<div className={styles.itemContainer}>
<h4>Item Code: {itemCode}</h4>
<h4>Description: {itemDescription}</h4>
<div>
{documentItems.map((x) => {
x.itemCode === itemCode ? (
<RedButton title={"Remove"} key={itemCode} />
) : (
<AddButton title={"Add"} key={itemCode} />
);
})}
</div>
</div>
);
}}
/>
);
};
我尝试过的其他选项:
我也试过这个,还是不行,按钮会出现,但是在点击第一个按钮后,这将成功添加product item
到quotation item
商店但是当我尝试点击`<AddButton title的第二个或第三个按钮时={'Add'} key={itemCode} /> 我没有得到任何回应。
<div>
{documentItems.length <= 0 ? (
<AddButton
title={"Add"}
key={itemCode}
onClick={() => onAddItem(itemCode)}
/>
) : (
documentItems!.map((x) =>
x.itemCode === itemCode ? (
<RedButton title={"Remove"} key={itemCode} />
) : (
<
AddButton title={"Add"} key={itemCode} onClick={() => onAddItem(itemCode)} />
)
)
)}
</div>
解决方案
请添加 return 关键字。
documentItems.map((x) => {
return (x.itemCode === itemCode ? (
<RedButton title={"Remove"} key={itemCode} />
) : (
<AddButton title={"Add"} key={itemCode} />
);
)})
或者只是删除花括号。
documentItems.map((x) => (x.itemCode === itemCode ? (
<RedButton title={"Remove"} key={itemCode} />
) : (
<AddButton title={"Add"} key={itemCode} />
)))
基于您在问题中所做的更新。这是“documentItems”中数据的问题。因为每个项目代码只需要 1 个按钮。而不是地图使用查找。它将返回 1 项并修复此重复项。
推荐阅读
- python - “SyntaxError: invalid syntax” 总是在带有 micro:bit 的 REPL 模式下显示在 mu-editor 上
- python - Django - 使用 pk_url_kwarg 选择性地查询模型
- amazon-web-services - Amazon SES 从 000-dsds-dss@amazonses.com 发送电子邮件,而不是配置的域
- python - 身份验证 OneDrive API Python
- docker - 如何控制 docker 确定磁盘空间是否“可回收”的方式?
- android - 如何使用按钮参数创建警报对话框的方法?
- c# - c#依赖注入无法将lambda转换为预期的委托
- ruby-on-rails - How to use gem cryptocompare in ruby on rails?
- javascript - 修改 VueJS 合并策略以优先考虑来自 mixin 的模板
- python - Python datetime delta format