You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React组件中能否在article标签使用value属性?点击article时如何实现显示标题?

React组件中能否在article标签使用value属性?点击article时如何实现显示标题?

兄弟,先给你理清楚两个核心问题:

1. article标签能不能用value属性?

答案是不能——原生HTML里,只有表单类元素(比如<input>、<select>、<textarea>这些)才有value属性,<article>作为块级内容标签,根本不支持这个属性。你强行加上value后,浏览器不会把它当成有效属性处理,所以e.target.value自然拿不到任何值,这就是你当前代码不生效的原因。

2. 怎么实现点击article显示标题的需求?

给你推荐几种简单靠谱的实现方式:

方式一:用自定义data属性存储标题

把标题存在data-*自定义属性里,点击时通过dataset获取:

import { useState } from 'react';

function ArticleDemo() {
  const [title, setTitle] = useState('');
  
  return (
    <div>
      {/* 用data-title存储标题 */}
      <article data-title="React状态管理实战" onClick={(e) => setTitle(e.target.dataset.title)}>
        点击我查看标题
      </article>
      <p>当前选中标题:{title}</p>
    </div>
  );
}

方式二:直接在点击事件中传入标题

如果标题是已知的变量,直接在点击回调里赋值更简单,不用操作DOM:

import { useState } from 'react';

function ArticleDemo() {
  const [title, setTitle] = useState('');
  const myArticleTitle = 'React组件性能优化技巧';
  
  return (
    <div>
      <article onClick={() => setTitle(myArticleTitle)}>
        点击我查看标题
      </article>
      <p>当前选中标题:{title}</p>
    </div>
  );
}

方式三:动态列表场景下的处理

如果是从数组渲染的多篇文章,直接把每篇的title作为参数传入点击事件:

import { useState } from 'react';

function ArticleList() {
  const [title, setTitle] = useState('');
  const articles = [
    { id: 1, title: 'React Hooks入门' },
    { id: 2, title: 'Next.js项目搭建' }
  ];
  
  return (
    <div>
      {articles.map(article => (
        <article 
          key={article.id} 
          onClick={() => setTitle(article.title)}
        >
          {article.title}
        </article>
      ))}
      <p>当前选中标题:{title}</p>
    </div>
  );
}

总结一下:别给非表单元素加value属性,用上面的方法就能轻松实现点击显示标题的效果啦~

备注:内容来源于stack exchange,提问作者Tyne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 11:18:09