美文网首页
React入门(三)

React入门(三)

作者: Leonard被注册了 | 来源:发表于2019-11-15 18:55 被阅读0次

React Hooks

React提供很多钩子函数,可以让函数式组件拥有状态和常用的生命周期函数以及ref/context等

  • useState(initialValue) => [当前最新的状态值,修改状态的方法]
  • useEffect() =>集合了DidMount和DidUpdate,通过改变第二个依赖参数选择单独执行哪一个
// 运用useState实现点击累加效果
export default function Test1(props) {
    let [state, setState] = useState(() => {
        // 懒初始化
        return {
            n: 0,
            m: 0
        }
    });
    // 使用生命周期
    useEffect(() => {
        console.log('All')
    })
    useEffect(() => {
        console.log('DidMount')
    }, [])
    useEffect(() => {
        console.log('DidUpdate')
    },[state.n])
    return <div>
        {state.n} === {state.m}
        <button onClick={ev => {
            setState({
                ...state,
                n: state.n + 1
            });
        }}>N+</button>
        <button onClick={ev => {
            setState({
                ...state,
                m: state.m + 1
            });
        }}>M+</button>
    </div>
}
初始化后
点击N+按钮后
点击M+按钮后
  • useRef() => 获取DOM元素
// 运用useRef()实现输入框自动聚焦
export default function Test1(props) {
    let [state, setState] = useState(() => {
        return {
            n: 0,
            m: 0
        }
    });
    let inputBox = useRef();
    useEffect(() => {
        inputBox.current.focus();
    }, [])
    return <div>
        <input type="text" ref={inputBox} />
    </div>
}
  • useReducer() => 类似于redux的管理机制
// 运用useReducer()完成点击累加效果
function reducer(state, action) {
    state = { ...state };
    switch (action.type) {
        case 'ADDN':
            state.n++;
            break;
        case 'ADDM':
            state.m++;
            break;
    }
    return state;
}
export default function Test1(props) {
    let [state, dispatch] = useReducer(reducer, {
        n: 0,
        m: 0
    });

    return <div>
        {state.n} === {state.m}
        <button onClick={ev => {
            dispatch({
                type: 'ADDN'
            })
        }}>N+</button>
        <button onClick={ev => {
            dispatch({
                type: 'ADDM'
            })
        }}>M+</button>
    </div>
}

相关文章

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • React Native:从入门到原理

    React Native:从入门到原理 React Native:从入门到原理

  • React Native学习资料

    React 入门实例教程React-Native入门指南Flex 布局教程:语法篇React Native探索(二...

  • React Native

    JavaScript 标准参考教程(alpha)ECMAScript 6入门 React 入门实例教程React ...

  • React 实践(一)

    参考:《React 入门实例教程--阮一峰》、《React 学习教程--众成翻译》。React 框架入门学习摘录。...

  • awesome-react-native

    React React 中文文档一定要看官方文档 React 入门实例教程阮一峰老师出品,最好的 react 入门...

  • 慕课视频

    免费 《Web安全-XSS》《ReactNative基础与入门》《React入门》《在React中使用Redux数...

  • React入门-001

    +++Categories = ["React",]Tags = ["React","入门",]date = "2...

网友评论

      本文标题:React入门(三)

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