React 入门:实战案例 TodoList 组件列表动态初始化
创始人
2024-03-23 03:59:33
0

文章目录

  • 实现思路
  • 实现步骤
    • 第一步:App 组件定义 TodoList 动态数据列表
    • 第二步:App 组件通过 props 传递数据到子组件 List
    • 第三步:List 组件接收 props 传入数据,并传入子组件 Item
    • 第四步:Item 组件接收 props 数据
  • 完整代码
    • App 组件完整代码
    • List 组件完整代码
    • Item 组件完整代码

本文实现 TodoList 组件列表动态初始化。

实现思路

通过父子组件之间通信,使用 props 从父组件把数据传递到子组件中。

实现步骤

第一步:App 组件定义 TodoList 动态数据列表

在 App 组件中通过 state 定义 TodoList 数据列表,代码片段如下:

// src/App.jsstate = {todoList: [{ id: 1, name: "参加晨会", done: true },{ id: 2, name: "A功能开发", done: true },{ id: 3, name: "B功能开发", done: false },],
};

第二步:App 组件通过 props 传递数据到子组件 List

通过 propsstate 中的 TodoList 数据传递到 List 组件中,代码片段如下:

// src/App.jstodoList} />

第三步:List 组件接收 props 传入数据,并传入子组件 Item

在 List 组件中接收通过 props 传递进来的数据,并渲染到到组件中,代码片段如下:

// src/components/List/index.jsx// 修改 List 组件的 render() 函数如下
render() {// 从 props 读取 TodoListconst { todoList } = this.props;return (
    {/* 遍历渲染 Item 组件,同时将 TodoList 的数据传入 */}{todoList.map((todo) => {return todo.id} {...todo} />;})}
); }

代码技巧 这个代码中使用了 js 的展开运算符 ... 可以高效灵活的将一个对象展开为组件的 props 属性。

第四步:Item 组件接收 props 数据

在 Item 组件中接收通过 props 传递进来的数据,并渲染到到组件中,代码片段如下:

// src/components/Item/index.jsx// 修改 Item 组件的 render() 函数如下
render() {// 从 props 读取 TodoList 的数据const { name, done } = this.props;return (
  • ); }

    注意 中初始渲染 TodoList 记录的初始状态,要使用 defaultChecked,而不能使用 checked,如果使用了 checked 则会导致界面上的 checkbox 点击时不能切换选中/取消的状态了。

    至此,完成了 TodoList 列表的数据动态化。

    完整代码

    App 组件完整代码

    // file: src/App.jsimport React, { Component } from "react";
    import Header from "./components/Header";
    import List from "./components/List";
    import Footer from "./components/Footer";
    import "./App.css";export default class App extends Component {// 初始化状态state = {todoList: [{ id: 1, name: "参加晨会", done: true },{ id: 2, name: "A功能开发", done: true },{ id: 3, name: "B功能开发", done: false },],};render() {const { todoList } = this.state;return (
    todoList} />
    );} }

    List 组件完整代码

    // file: src/components/List/index.jsximport React, { Component } from "react";
    import Item from "../Item";
    import "./index.css";export default class List extends Component {render() {// 从 props 读取 TodoListconst { todoList } = this.props;return (
      {/* 遍历渲染 Item 组件,同时将 TodoList 的数据传入 */}{todoList.map((todo) => {return todo.id} {...todo} />;})}
    );} }

    Item 组件完整代码

    // file: src/components/Item/index.jsximport React, { Component } from "react";
    import "./index.css";export default class Item extends Component {render() {const { name, done } = this.props;return (
  • );} }

    至此完成 TodoList 组件列表动态初始化。

    相关内容

    热门资讯

    汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
    美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
    嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
    重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
    盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
    senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
    终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
    盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
    总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
    终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...