如何在反应中唯一标识标签
how to uniquely identify tags in react
我正在尝试使用 React 访问文章上的标签。在后端,我使用 Django-taggit 实现了标记功能,标签以字符串数组的形式返回。
然后,这就是我在 react
中实现标签循环的方式
<ul className="tags" >
{!article.tags ? "" : article.tags.map(tag => (
<Link to="/view-articles">
<li className="d-inline tag-name"
key={tag}
value={tag}>
{tag}
</li>
</Link>
))}
</ul>
问题是,反应给出了错误‘Missing "key" prop for element in iterator’
我该如何解决这个问题?看来我需要为每个标签设置一个唯一标识符才能正常工作
向 Link.You 添加一个 key prop 不需要 li 上的 key element.You 需要它在你在 map.Keep 中重复的 JSX 的最顶层元素记住key prop 应该是唯一的 constant.If 你的标签是唯一的,然后只使用标签值或者我更喜欢做这样的事情。
连接标签和索引,即使标签重复,结果字符串也是唯一的。
article.tags.map((tag,index) => (
<Link key = {`${tag}-index`} to="/view-articles">
<li className="d-inline tag-name"
value={tag}>
{tag}
</li>
</Link>
作为旁注,{${tag}-index
} 仅表示 {tag + '' + index}。我更喜欢 ES6 模板文字而不是字符串连接。
如果仔细查看代码,您会发现迭代器中输出的元素不是 li
元素(您在其上放置了 key
属性),但是 Link
。试试这个:
<ul className="tags" >
{!article.tags ? "" : article.tags.map(tag => (
<Link to="/view-articles" key={tag}>
<li
className="d-inline tag-name"
value={tag}
>
{tag}
</li>
</Link>
))}
</ul>
我正在尝试使用 React 访问文章上的标签。在后端,我使用 Django-taggit 实现了标记功能,标签以字符串数组的形式返回。
然后,这就是我在 react
中实现标签循环的方式<ul className="tags" >
{!article.tags ? "" : article.tags.map(tag => (
<Link to="/view-articles">
<li className="d-inline tag-name"
key={tag}
value={tag}>
{tag}
</li>
</Link>
))}
</ul>
问题是,反应给出了错误‘Missing "key" prop for element in iterator’
我该如何解决这个问题?看来我需要为每个标签设置一个唯一标识符才能正常工作
向 Link.You 添加一个 key prop 不需要 li 上的 key element.You 需要它在你在 map.Keep 中重复的 JSX 的最顶层元素记住key prop 应该是唯一的 constant.If 你的标签是唯一的,然后只使用标签值或者我更喜欢做这样的事情。 连接标签和索引,即使标签重复,结果字符串也是唯一的。
article.tags.map((tag,index) => (
<Link key = {`${tag}-index`} to="/view-articles">
<li className="d-inline tag-name"
value={tag}>
{tag}
</li>
</Link>
作为旁注,{${tag}-index
} 仅表示 {tag + '' + index}。我更喜欢 ES6 模板文字而不是字符串连接。
如果仔细查看代码,您会发现迭代器中输出的元素不是 li
元素(您在其上放置了 key
属性),但是 Link
。试试这个:
<ul className="tags" >
{!article.tags ? "" : article.tags.map(tag => (
<Link to="/view-articles" key={tag}>
<li
className="d-inline tag-name"
value={tag}
>
{tag}
</li>
</Link>
))}
</ul>