当前位置: 首页 > news >正文

有哪些网站做二手房好的trinseo公司

有哪些网站做二手房好的,trinseo公司,长沙网上房地产官网,小公司怎么做网站React Hooks 1. 使用hooks理由 高阶组件为了复用,导致代码层级复杂生命周期的复杂 2. useState(保存组件状态) const [state, setstate] useState(initialState)3. useEffect(处理副作用)和useLayoutEffect(同步执行副作用) 使用方式: useEffect(…

React Hooks

1. 使用hooks理由

  1. 高阶组件为了复用,导致代码层级复杂
  2. 生命周期的复杂

2. useState(保存组件状态)

const [state, setstate] = useState(initialState)

3. useEffect(处理副作用)和useLayoutEffect(同步执行副作用)

  1. 使用方式:
useEffect(() => {// effectreturn () => {// cleanup};
}[依赖的状态;空数组,表示不依赖])
  1. 说明:
  • 不传入依赖:对比componentDidMount生命周期,表示初始加载完后执行
  • 传入依赖:对比componentDidMountcomponentDidUpdate生命周期,表示加载完后和更新完成后执行
  • 回调函数内return函数,对比componentWillUnmount销毁生命周期
  1. 示例:
useEffect(()=>{const timer = setInterval(()=>{console.log('这是定时器')}, 1000)return ()=>{console.log('componentWillUnmount销毁时触发')clearInterval(timer)}
},[name])
  1. useEffectuseLayoutEffect区别:

简单来说就是调用时机不同,useLayoutEffect和原来componentDidMount & componentDidUpdate一致,在react完成DOM更新后马上同步调用代码,会阻塞页面渲染。useEffect则是在整个页面渲染完才会调用代码

官方优先建议使用useEffect

在实际使用时如果想避免页面抖动(在useEffect里修改DOM很有可能出现)的话,可以把需要操作的DOM的代码放在useLayoutEffect里,在这里做DOM操作,这些DOM修改会和react做出的更改一起被一次性渲染到屏幕上,只有一次回流、重绘的代价

4. useCallBack(记忆函数)

防止因为组件重新渲染,导致方法被重新创建,起到缓存作用,只有第二个参数变化了,才重新声明一次

var handleClick = useCallback(()=>{console.log(name)
},[name])<button onClick={()=>handleClick()}>点击</button>// 只有name改变后,这个函数才会重新声明一次
// 如果传入空数组,那么就是第一次创建被缓存,如果name后期改变了,拿到的还是老name
// 如果传第二个参数,每次都会重新声明一次,拿到的就是最新的name

5. useMemo(记忆组件)(可以理解为Vue的计算属性)

useCallBack的功能完全可以由useMemo所取代,如果你想通过使用useMemo返回一个记忆函数也是完全可以的。

useCallback(fn, inputs) is equivalent to useMemo(()=> fn, inputs)

唯一的区别是:useCallback不会执行第一个参数函数,而是将它返回给你,而useMemo会执行第一个函数并将函数执行结果返回给你。所以在前面的例子中,可以返回handleClick来达到存储函数的目的。
所以useCallback常用记忆事件函数,生成记忆后的事件函数并传递给子组件使用。而useMemo更适合经过函数计算得到一个确定的值,比如记忆组件。

const getFilterList = useMemo(()=> list.filter(item => item.name.toUpperCase().includes(text.toUpperCase())),[list, text] // 如果list和text变化)

6. useRef(保存引用值)

  1. 设置ref属性值
const myRef = useRef(null)
<Child ref={myRef}/>
  1. 用于缓存一个变量值
const [name, setName] = useState('zhangsan')
var mycount = useRef(0)
<button onClick={()=>{setName('lisi')mycount.current++
}}>点击</button>
{name}-{mycount}

7. useReduceruseContext(减少组件层级)

  1. useContext用于组件通信,接收父组件传入的值
// 父组件
import React from 'react'
var GlobalContext = React.createContext()function App(){<GlobalContext.Provider value={{name: '张三',age: 20,changeAge: (value) => {setAge(value)}}}><Child /></GlobalContext.Provider>
}// 子组件内
function Child(){const text = useContext(GlobalContext)
}
  1. useReducer:实现Reduxreducer的功能,应用在组件通信中
const reducer = (prevState, action)=>{const newState = { ...prevState }switch(action.type){case 'add':newState.count ++return newStatecase 'minus':newState.count -- return newStatedefault:return prevState}
}
const initialState = {count: 0
}
// FC中const [state, dispatch] = useReducer(reducer, initialState)<button onClick={()=>{dispatch({type: 'minus'})}}>-</button>{state.count}<button onClick={()=>{dispatch({type: 'add'})}}>+</button>

8. 自定义hooks

当我们想在两个函数之间共享逻辑时,我们会把它提取到第三个函数中。
必须以use开头吗?必须如此。这个约定非常重要。不遵循的话,由于无法判断某个函数是否包含其内部Hook的调用,React将无法自动检查你的Hook是否违反了Hook的规则

http://www.dinnco.com/news/40232.html

相关文章:

  • 政府网站管理推进集约建设个人怎么做免费百度推广
  • 软件设计大赛seo关键词排名优化联系方式
  • 深圳网站优化运营完整的网页设计代码
  • 百度灰色关键词排名seo引擎优化专员
  • 网站开发从入门到精通注册网站在哪里注册
  • 怎么开通个人网站无货源电商怎么做
  • 响应式网站404页面怎么做游戏推广工作好做吗
  • 武汉网站seo诊断百度官网认证价格
  • 网站开发常用小图片网站seo优化心得
  • 网站模板佳好乐云seo拉新推广怎么做代理
  • 外贸网站 费用企业建站 平台
  • 有哪些商业网站重庆网页优化seo
  • 出口做谷歌网站最好的网络推广方式
  • 2017优秀网站设计欣赏本地推广平台有哪些
  • 有免费做推广的网站吗山东关键词网络推广
  • 本地企业网站建设模板北京优化靠谱的公司
  • 新疆做网站的公司网站关键词收录查询
  • 一个新手如何做网站短链接生成网址
  • 网站代运营协议营销软文范例
  • qq小程序游戏入口win7优化大师官网
  • 用什么做网站后台邯郸网站建设优化
  • 江西住房与城乡建设委员会网站宁波 seo排名公司
  • 网站备案和不备案的区别贵阳百度seo点击软件
  • .net 微信网站开发网站运营主要做什么
  • 柳州企业网站建设网页广告怎么做
  • 单页营销网站后台2345网址导航桌面版
  • 揭阳网站建设方案托管地推拉新app推广平台
  • free theme wordpress软件排名优化
  • 网站开发吗和APP软件一样吗百度霸屏推广多少钱一个月
  • 湖南网站推广哪家专业深圳营销型网站设计公司