useState

作者: noyanse | 来源:发表于2019-05-18 14:23 被阅读0次

react-hooks

如果你熟悉 React class 的生命周期函数,你可以把 useEffect Hook 看做 componentDidMount,componentDidUpdate 和 componentWillUnmount 这三个函数的组合

the rules of hooks

  1. 只在最顶层使用Hook,不要在循环,条件或嵌套函数中调用Hook
  2. 只在React函数中调用Hook

React.Fragment 和 aux 组件是一样的效果

import React, { useState } from 'react'

/**
 * React.Fragment 和 aux 组件是一样的效果
 */
const todo1 = props => {
    const [todoName, setTodoName] = useState('todo')
    const [todoList, setTodoList] = useState([])
    // const [todoState, setTodoState] = useState({
    //     userInput: '',
    //     todoList: []
    // })

    const inputChangeHandler = (e) => {
        console.log(e.target.value)
        setTodoName(e.target.value)
    }
    const todoAddHandler = () => {
        console.log('add')
        setTodoList(todoList.concat(todoName)) // new Array
    }

    return <React.Fragment>
        <input 
            type="text" 
            placeholder="Todo" 
            onChange={inputChangeHandler} 
            value={todoName}
        />
        <button onClick={todoAddHandler}>Add</button>
        <ul>
           {todoList.map(item => (
               <li key={item}>{item}</li>
           ))}
        </ul>
    </React.Fragment>
}

const todo = props => {
    const [todoState, setTodoState] = useState({
        userInput: '',
        todoList: []
    })

    const inputChangeHandler = (e) => {
        console.log(e.target.value)
        setTodoState({
            userInput: e.target.value,
            todoList: todoState.todoList
        })
    }
    const todoAddHandler = () => {
        console.log('add')
        setTodoState({
            userInput: todoState.userInput,
            todoList: todoState.todoList.concat(todoState.userInput)
        })
    }

    return <React.Fragment>
        <input 
            type="text" 
            placeholder="Todo" 
            onChange={inputChangeHandler} 
            value={todoState.userInput}
        />
        <button onClick={todoAddHandler}>Add</button>
        <ul>
           {todoState.todoList.map(item => (
               <li key={item}>{item}</li>
           ))}
        </ul>
    </React.Fragment>
}

export default todo

相关文章

  • React Hooks——useState的源码流程

    React Hooks——useState 源码版本 16.8 useState 流程示意图 从useState源...

  • React Hooks

    一.useState 提示: useState 最好是在最顶层调用, 组件每次渲染的 useState 数量必须...

  • React Hooks

    一.useState hooks就是在函数组件中使用state通过useState实现的。 useState传入一...

  • 01-React-hooks-useState基本使用

    React-hooks-useState useState的基本用法 格式: 初始状态 useState的第一个参...

  • React-Hooks之保存状态和生命周期

    1.保存状态(useState) useState(initialState) 的参数 initialState ...

  • useState 实现原理

    useState 熟悉hooks的都知道,最常用的useState 大概用法 简单的实现一个useState 先模...

  • hook useEffect

    useState 最简单的 useState 用法是这样的:function Counter() { var [...

  • 常用React Hooks 方法

    useState 使用状态 const [n, setN] = React.useState(0)const [u...

  • reactHooks的使用

    useState的使用 在reactHooks中useState代替了原本的state,const [age,se...

  • Hooks

    useState 说明: 通过useState来定义数据,以及修改方式(即:set方式) 如上:loading即为...

网友评论

      本文标题:useState

      本文链接:https://www.haomeiwen.com/subject/jwktzqtx.html