网站怎么弄实名制认证,wordpress页面显示分类,广州模板网站,湖北网站设计制作价格一、什么是Hooks Hooks 是 React 16.8 的新增特性。在不编写 class 的情况下使用 state 以及其他的 React 特性。Hooks 是一种在函数式组件中使用有状态函数的方法。
二、类组件
componentDidMount、componentDidUpdate 和 componentWillUnmount 这三个函数的组合。
三、常用…一、什么是Hooks Hooks 是 React 16.8 的新增特性。在不编写 class 的情况下使用 state 以及其他的 React 特性。Hooks 是一种在函数式组件中使用有状态函数的方法。
二、类组件
componentDidMount、componentDidUpdate 和 componentWillUnmount 这三个函数的组合。
三、常用的Hook Api
useStateuseEffectuseContext
useCallbackuseMemouseRefuseImperativeHandle
1、useState使用
import React, { useState } from react;2 import {3 SafeAreaView,4 Text,5 TouchableOpacity6 } from react-native;7 import Constants from ./expand/dao/Constants;8 import { post } from ./expand/dao/HiNet;9 export default (props: any) {10 const [msg, setMsg] useState();11 const doFetch () {12 const formData new FormData();13 formData.append(requestPrams, RN);14 post(Constants.test.api)(formData)().then(result {15 setMsg(JSON.stringify(result));16 }).catch(e {17 console.log(e);18 setMsg(JSON.stringify(e));19 })20 }21 return (22 SafeAreaView23 TouchableOpacity onPress{doFetch}24 Text加载/Text25 /TouchableOpacity26 Text{msg}/Text27 /SafeAreaView28 );29 };
从上述代码中我们不难看出在React Native中使用State Hook的主要步骤
导入useStateimport React, { useState } from react;通过useState定义stateconst [msg, setMsg] useState(); msg是定义的state中一个变量setMsg是用来修改msg变量的关联函数它的格式是set变量名首字母大写修改状态通过前面定义的关联函数setMsg修改即可setMsg(JSON.stringify(result));State Hook的作用范围因为Hooks只能应用与函数式组件所以通过它声明的state的作用范围是函数内。
Hook 简介 – React2、useEffect使用
import React, { useState, useEffect } from react;
import {SafeAreaView,StyleSheet,Text,TouchableOpacity
} from react-native;
import Constants from ./expand/dao/Constants;
import { post } from ./expand/dao/HiNet;
export default (props: { navigation: any }) {const [msg, setMsg] useState();useEffect(() {//对应componentDidUpdatefunction handleStatusChange(status: any) {console.log(status);}const timer setTimeout(() {doFetch();}, 2000);// 对应componentWillUnmountreturn function cleanup() {timer clearTimeout(timer);};});const doFetch () {const formData new FormData();formData.append(requestPrams, RN);post(Constants.test.api)(formData)().then(result {setMsg(JSON.stringify(result));}).catch(e {console.log(e);setMsg(JSON.stringify(e));})}return (SafeAreaViewTouchableOpacity onPress{doFetch}Text加载/Text/TouchableOpacityText{msg}/Text/SafeAreaView);
};
导入useEffectimport React, { useState,useEffect } from react;使用useEffect来实现不同生命周期函数的hooks 直接写在useEffect(() {}一层的会在组件装载时调用对应componentDidMounthandleStatusChange对应componentDidUpdatecleanup对应componentWillUnmount在组件卸载时调
3、useContext使用
const value useContext(MyContext);
接收一个 context 对象React.createContext 的返回值并返回该 context 的当前值。当前的 context 值由上层组件中距离当前组件最近的 MyContext.Provider 的 value prop 决定。
当组件上层最近的 MyContext.Provider 更新时该 Hook 会触发重渲染并使用最新传递给 MyContext provider 的 context value 值。即使祖先使用 React.memo 或 shouldComponentUpdate也会在组件本身使用 useContext 时重新渲染。
4、useCallback使用
const memoizedCallback useCallback(() {doSomething(a, b);},[a, b],
);
把内联回调函数及依赖项数组作为参数传入 useCallback它将返回该回调函数的 memoized 版本该回调函数仅在某个依赖项改变时才会更新。当你把回调函数传递给经过优化的并使用引用相等性去避免非必要渲染例如 shouldComponentUpdate的子组件时它将非常有用。
useCallback(fn, deps) 相当于 useMemo(() fn, deps)。
5、useMemo使用
把“创建”函数和依赖项数组作为参数传入 useMemo它仅会在某个依赖项改变时才重新计算 memoized 值。这种优化有助于避免在每次渲染时都进行高开销的计算。
6、useRef使用
useRef 返回一个可变的 ref 对象其 .current 属性被初始化为传入的参数initialValue。返回的 ref 对象在组件的整个生命周期内持续存在。
7、useImperativeHandle使用
useImperativeHandle 可以让你在使用 ref 时自定义暴露给父组件的实例值。在大多数情况下应当避免使用 ref 这样的命令式代码。useImperativeHandle 应当与 forwardRef 一起使用
8、Hook useMemo useCallback 的区别
useMemo 用于优化计算开销大的操作。它会记忆一个值只有当依赖项改变时才会重新计算这个值。
const memoizedValue useMemo(() computeExpensiveValue(a, b), [a, b]);
在上面的例子中computeExpensiveValue 是一个计算开销很大的函数它依赖于变量 a 和 b。只有当 a 或 b 改变时computeExpensiveValue 才会重新计算。
使用场景
计算开销大的值。需要重用计算结果以避免不必要的计算。 useCallback 用于优化传递给子组件的回调函数。 Hook 简介 – ReactReact Native Hooks开发指南