React Hooks
什么是React Hooks
React Hooks 要解决的是状态共享,是继render-props() 和higher-order components(高阶组件)之后的第三种状态共享方案
function App(){
const [open,setOpen] = useState(false);
return(
<>
<Button type="primary" onClick = {() => setOption(true)}>
Open Modal
</Button>
</>
<Modal
visible={open}
onOk={() =>setOpen(false)}
onCancel={() => setOpen(false)}
/>
)
}
React Hooks 就想一个内置的打平 renderProps 库,我们可以创建一个值,与修改这个值得方法。看上去像function形势的setState,其实这等价于依赖注入,与使用setState相比,这个组件是没有状态的。
React Hooks 的特点
React Hooks 带来的好处不仅是“更FP,更新粒度更细,代码更清晰” 1.多个状态不会产生嵌套,写法是平铺的(renderProps可以通过compose解决,不但使用略为繁琐,而且因为强制封装一个新对象而增加了实体数量)。 2.Hooks 可以引用其他Hooks 3.更容易将组件的UI与状态分离。
利用useEffect代替一些生命周期
useEffect(() => {
const subscription = props.source.subscribe();
return() =>{
subscription.unsubscribe();
}
})
useEffect 的代码既会在初始化的时候执行,也会在后续每次rerender时执行,而返回值解析结构时执行。这个更多带来的便利,对比G2图表
this.chart = new G2.Chart({
container: document.getElementById("chart"),
forceFit:true,
height:300
});
this.freshChart(this.props)
componentWillReceiveProps(nextProps:Props){
this.freshChart(nextProps);
}
componentWillUnmount(){
this.chart.destroy();
}
freshChart(props:Props){
this.Chart.render();
}
render(){
return <div ref={ref => (this.rootDomRef = ref)} />;
}
[React Hooks 入门教程][1] [1]:http://www.ruanyifeng.com/blog/2019/09/react-hooks.html