React component not rendering inside .map with if statement(使用 if 语句反应组件未在 .map 内呈现)
问题描述
请帮忙.如果 list.display = true,我有一个要加载的组件.我可以做一个控制台日志来确认何时应该显示列表并且它工作正常.但是,组件不会加载.如果我将组件从 .map 循环中取出,它会完美运行.
Please help. I have a component that I am trying to load if list.display = true. I am able to do a console log confirming when the list should be displayed and it works properly. However, the component does not load. If I take the component out of the .map loop it works perfectly.
谢谢
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
函数的目的,它应该为每个元素返回一个值 它被调用.它返回一个与迭代的数组长度相同的数组.你实际上是在过滤你的结果.
I think you completely miss the purpose of javascript's array::map
function, it should return a value for every element it is called on. It returns an array that is the same length as the array it iterated over. You are actually filtering your results a bit.
Filter/Map - 过滤数组结果然后映射到响应 JSX
Filter/Map - Filter array results then map to react JSX
{
lists
.filter((list: listInterface) => list.display) // exploit truthy/falsey display value
.map((list: listInterface) => (
<ToDoApp list={lists[0]} />
))
}
Reduce - 允许将结果直接过滤"到 React JSX 中
Reduce - Allows to "filter" results directly into react JSX
{
lists.reduce((filteredLists: listsInterface, list: listInterface) => {
if (list.display) {
filteredLists.push(<ToDoApp list={lists[0]} />);
}
return filteredLists
}, [])
}
这篇关于使用 if 语句反应组件未在 .map 内呈现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用 if 语句反应组件未在 .map 内呈现
基础教程推荐
- 如何使用TypeScrip将固定承诺数组中的项设置为可选 2022-01-01
- Electron 将 Node.js 和 Chromium 上下文结合起来意味着 2022-01-01
- Vue 3 – <过渡>渲染不能动画的非元素根节点 2022-01-01
- html表格如何通过更改悬停边框来突出显示列? 2022-01-01
- 我可以在浏览器中与Babel一起使用ES模块,而不捆绑我的代码吗? 2022-01-01
- Chart.js 在线性图表上拖动点 2022-01-01
- 用于 Twitter 小部件宽度的 HTML/CSS 2022-01-01
- 直接将值设置为滑块 2022-01-01
- 如何使用JIT在顺风css中使用布局变体? 2022-01-01
- 自定义 XMLHttpRequest.prototype.open 2022-01-01