gpt4 book ai didi

javascript - React 组件未使用 if 语句在 .map 内渲染

转载 作者:太空宇宙 更新时间:2023-11-03 22:56:48 25 4
gpt4 key购买 nike

请帮忙。我有一个组件,如果 list.display = true,我将尝试加载该组件。我能够执行控制台日志,确认何时应显示列表并且它可以正常工作。但是,该组件未加载。如果我将组件从 .map 循环中取出,它就可以正常工作。

谢谢

return (
<div className="container">
<h1>To Do App</h1>
<p>Create a list:</p>
<form>
<label htmlFor="list">
<input type="text" name="list" id="list" onChange={e => setInputListName(e.target.value)}/>
<button onClick={addList}>Create List</button>
</label>
</form>

<div className="listsContainer">
{
lists.map( (list: listInterface, index:number) =>
(<button onClick={() => loadList(index)}>{list.listName}</button>)
)
}
{
lists.map( (list: listInterface, index:number) => {
if (list.display == true) {
<ToDoApp list={lists[0]} />
console.log("List " + list.listName + " ordered");
}
})
}
</div>
</div>
);

最佳答案

我认为你完全错过了 javascript 的 array::map 函数的目的,它应该为调用它的每个元素返回一个值。它返回一个与其迭代的数组长度相同的数组。您实际上正在对结果进行一些过滤。

Filter/Map - 过滤数组结果然后映射到 React JSX

{
lists
.filter((list: listInterface) => list.display) // exploit truthy/falsey display value
.map((list: listInterface) => (
<ToDoApp list={lists[0]} />
))
}

Reduce - 允许将结果直接“过滤”到 React JSX

{
lists.reduce((filteredLists: listsInterface, list: listInterface) => {
if (list.display) {
filteredLists.push(<ToDoApp list={lists[0]} />);
}
return filteredLists
}, [])
}

关于javascript - React 组件未使用 if 语句在 .map 内渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59925252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com