React Hook 组件通信

2019-11-13  本文已影响0人  张思学

React Hook 组件通信 与 以前版本思路一致,不多介绍,直接贴代码!!todoList为例子, 代码里还包含了className的新方式

父组件
import React, {useState} from 'react';
import {Button, Input, Message} from '@alifd/next';
import List from './components/list';
import styles from './index.module.scss';

export default function TodoList() {
  const [inputValue, setInputValue] = useState('');
  const [list, setList] = useState(["第一条", "第二条", "第三条", "第四条"]);

  function deleteListItem(index) {
    list.splice(index, 1);
    setList([...list]);
  }

  return (
    <div className={styles.todoList}>
      <div className={styles.todoSo}>
        <Input
          placeholder="请输入"
          value={inputValue}
          onChange={(e) => {
            setInputValue(e);
          }}
          className={styles.todoInput}/>
        <Button
          type="primary"
          className={styles.todoButton}
          onClick={() => {
            if (inputValue)
              setList([...list, inputValue]);
            else
              Message.error('输入不能为空');
            setInputValue('');
          }}>添加</Button>
      </div>
      <ul className={styles.todoUl}>
        {list.map((item, index) => (
          <List key={index} item={item} index={index} deleteItem={deleteListItem}/>
        ))}
      </ul>
    </div>
  );
};
子组件
import React from 'react';

export default function List(props) {  //props接收
  function delItem(index) {
    props.deleteItem(index);
  }

  return (
    <li onClick={delItem.bind(this, props.index)}>{props.index} - {props.item}</li>
  );
};
上一篇下一篇

猜你喜欢

热点阅读