React - 组件内动态创建列表项

2024-04-22

有什么办法可以添加动态li元素融入我的ul列表 ? 我想添加我的li单击按钮。这是示例代码

class Component1 extends React.Component {

    constructor() {
        super();
    }

    add() {
        let ul = document.getElementById('mylist');
        let li = document.createElement('li');
        li.appendChild(document.createTextNode({some_variables});
        ul.appendChild(li);
    }
    render() {
        return (
                <a href="#" onClick={() => this.add()}>Add</a>
                <ul id="mylist">
                    /* dynamic list ITEM  */

                </ul>
        );
    }
}

ReactDOM.render(<Component1 />, document.getElementById('root'));

当然当前功能add()不适用于 React


当使用 React 时,我们不会像通常使用其他库(如 jQuery)那样“接触”DOM。
React 最好的核心功能之一是虚拟 DOM,协调和比较算法 https://reactjs.org/docs/reconciliation.html

React 构建并维护渲染的内部表示 用户界面。它包括您从组件返回的 React 元素。 这种表示方式让 React 避免创建 DOM 节点并访问 现有的超出必要,因为这可能比运营慢 在 JavaScript 对象上。有时它被称为“虚拟 DOM”

在反应中,您创建渲染/返回的组件(函数)jsx(标记)。
您的场景的一个简单示例可能是:

const ListItem = ({ value, onClick }) => (
  <li onClick={onClick}>{value}</li>
);

const List = ({ items, onItemClick }) => (
  <ul>
    {
      items.map((item, i) => <ListItem key={i} value={item} onClick={onItemClick} />)
    }
  </ul>
);

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      inputValue: '',
      fruites: ['Apple', 'Banana', 'Orange']
    };
  }

  onClick = () => {
    const { inputValue, fruites } = this.state;
    if (inputValue) {
      const nextState = [...fruites, inputValue];
      this.setState({ fruites: nextState, inputValue: '' });
    }
  }

  onChange = (e) => this.setState({ inputValue: e.target.value });

  handleItemClick = (e) => {console.log(e.target.innerHTML)}

  render() {
    const { fruites, inputValue } = this.state;
    return (
      <div>
        <input type="text" value={inputValue} onChange={this.onChange} />
        <button onClick={this.onClick}>Add</button>
        <List items={fruites} onItemClick={this.handleItemClick} />
      </div>
    );
  }
}


ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React - 组件内动态创建列表项 的相关文章

随机推荐

  • .NET“隔离存储”存储在哪里?

    物理文件在哪里 这取决于操作系统以及是否启用漫游用户配置文件 例如 在 XP 上 使用非漫游配置文件时 位置为
  • Asp.net:委托(“操作”)可以序列化为控制状态吗?

    我正在实现一个用户控件 该控件具有一个将 Action 委托作为参数的方法 尝试将委托存储在控制状态中会产生序列化错误 是否有可能将委托序列化为控制状态 BP 这并不容易 而且可能会引发潜在问题 理论上可以使用反射来确定委托正在调用对象的哪
  • 为什么我的 Scrapy 中的输入/输出处理器不工作?

    我正在努力追随本教程 http doc scrapy org en 1 1 intro tutorial html 我想要我的desc字段是标准化为单个空格且大写的单个字符串 dmoz spider py import scrapy fro
  • 通过 REST API 的 VSTS 工作项列表

    如何使用 REST API 从 VSTS 获取工作项列表 根据文档 https www visualstudio com docs integrate api wit work items the ids参数是可选的 但是当我省略它时 我得
  • Android半圆形进度条-绘制半圆

    我用这个创建了一个半圆形进度条devadvance circularSeekBar https github com devadvance circularseekbar当我从调色板中选择自定义视图时 它看起来像这样 在此我有两个带有权重的
  • 转换为“日期时间”类型时出现问题:“小时必须为 0..23”

    这些是我的 csv 文件中的一些示例行 10 10 1949 20 30 san marcos tx us cylinder 2700 45 minutes This event took place in early fall aroun
  • 在 C++ Win32 应用程序中,如何确定私有字节、工作集和虚拟大小[重复]

    这个问题在这里已经有答案了 我正在编写一些用于教育目的的代码 我希望能够从用 C 编写的 Windows 控制台程序中打印这些内存使用值 花了一些时间从这些链接中获取我想要的内容 但它就是这样 大部分困难是让它在 Mingw32 中工作 c
  • Solr 和方面搜索

    当您设置模式时 分面搜索是否内置 或者您是否必须做一些事情来设置它 它基本上可以在您设置为可排序的所有字段上开箱即用吗 那么您只需使用 fq 查询语法 它就会返回构面 xml 以及搜索结果 有没有一篇关于这方面的好文章对您第一次有帮助 是的
  • 了解共享指针的问题(生命周期,作为参数传递)

    我尝试从 boost asio 聊天示例开始并派生出一个自己的网络程序 不幸的是 我在理解到底发生了什么方面遇到了一些问题 我试图将我的程序减少到绝对最低限度 服务器类等待传入连接并创建会话对象来处理连接 这是服务器的代码 include
  • RxSwift:管理应用程序中的对象更新

    我非常关心如何管理对象属性的更改 假设我有一个 汽车 类 其中包含一些属性 例如 名称 日期 价格 等 在我的视图 A 中 我正在显示从 API 检索的所有汽车 在视图 B 和 C 中 我可以显示和编辑有关视图 A 中所选汽车的特定信息 假
  • Gridpane 中的 JavaFx 图像会大幅降低性能

    我想创建一个 GridPane 嵌套在 ScrollPane 中 在其中动态添加单元格到 GridPane 每个单元格都包含一个带有背景图像的 VBox 一些标签和一个复选框 问题是 GridPane 可以包含数百个 VBox 在我的例子中
  • 为什么 Google 测试工具使用“id”属性来生成微数据项的 URL?

    我正在使用一些微数据来描述一篇博客文章 我对 Schema org 的价值回报感到惊讶BlogPosting通过 Google 开发者测试工具 我本以为它是 itempropurl 不是网站 URL 和项目的合并id 我做错了什么 还是只是
  • jQuery,选择具有属性的最近兄弟(下一个或上一个)

    我有一个类似于下面标记的选择下拉列表
  • 如何使用java上传谷歌云存储中的文件

    我已经尝试使用java在Google云存储中上传文件很长时间了 通过浏览我找到了这段代码 但无法准确理解 任何人都可以定制这个以在 GCS 中上传文件吗 Given InputStream inputStream object data e
  • 更快的位图对比度算法

    我有一个带有轨迹栏滑块控件的工具 用于调整图像的亮度 对比度 伽玛值等 我试图在用户拖动滑块时实时更新我的 图像 亮度和伽玛算法的速度是可以接受的 大约170ms 但对比算法大约是380ms 基本上我的表单是一个带有滑块的工具窗口 每次更新
  • 循环遍历一组谷歌工作表值

    我有2组数据 一是坦克名称 Tank Name A1 A2 B1 B2 接下来是开 关数据 ON OFF 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 现在我要查看的结果是 当ON OFF为1时
  • 将鼠标悬停在 Shiny 中的元素上时如何更改绘图?

    我正在寻找一种解决方案 当用户将鼠标悬停在同一面板中的超链接上时 可以更改 Shiny 应用程序中的绘图 这是一个简单的例子 library shiny words lt sort sapply 1 50 USE NAMES F FUN f
  • 由于 istio-sidecar 注入,Kubernetes 部署失败

    我们的 K8 集群工作了一年多 最近它出现了一些奇怪的行为 现在当我们使用kubectl apply f deployment manifest yaml 它没有显示在kubectl get pods 但显示在kubectl get dep
  • 从 ggraph 网络图表中检索节点坐标

    假设我制作了这个图表 library ggraph library igraph my chart lt graph from data frame highschool set seed 2017 ggraph my chart layo
  • React - 组件内动态创建列表项

    有什么办法可以添加动态li元素融入我的ul列表 我想添加我的li单击按钮 这是示例代码 class Component1 extends React Component constructor super add let ul docume