如何在a标签内输出item属性值,基于GetBlogState生成博客动态链接
你现有代码的拼接逻辑是正确的,实际开发中注意以下几点即可:
- 加非空判断避免接口返回前的报错
初始状态下如果GetBlogState未赋值为数组,直接调用map会抛出异常,建议加上可选链操作符:GetBlogState?.map(...) - 处理Slug空值异常
可以先过滤掉没有Slug字段的项,避免生成无效链接,也可以给Slug加兜底值 - 尽量用框架路由组件代替原生a标签
如果是React项目用React Router、Next.js这类框架,用框架提供的Link组件可以避免整页刷新,优化访问体验 - 优化key取值
遍历渲染列表时如果数据项有唯一ID,优先用ID作为key值,代替index避免列表变动时的渲染异常
修正后的参考代码:
// 使用React Router的场景示例 import { Link } from 'react-router-dom' // 列表渲染逻辑 GetBlogState?.filter(item => item.Slug).map((item) => ( <div className="h-68" key={item.id /* 替换为你的数据唯一标识字段 */}> {/* 其他业务代码 */} <h2 className="font-bold mb-5 text-xl"> <Link to={`/blog/${item.Slug}`} className="hover:underline"> {item.Title} </Link> </h2> {/* 其他业务代码 */} </div> )) // 如果必须用原生a标签的写法: GetBlogState?.filter(item => item.Slug).map((item) => ( <div className="h-68" key={item.id}> {/* 其他业务代码 */} <h2 className="font-bold mb-5 text-xl"> <a href={`/blog/${item.Slug}`} className="hover:underline"> {item.Title} </a> </h2> {/* 其他业务代码 */} </div> ))
内容的提问来源于stack exchange,提问作者Red Virus
相关产品推荐
相关产品推荐

