Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
378 views
in Technique[技术] by (71.8m points)

关于react的高阶组件和redux

最近在学习一个react教程的时候,他提到了react高阶组件的方法,学着感觉有点懵,但是之前用过redux,感觉使用redux也可以完成这个方法,想问的是在一般的场景里,是自己写一个react高阶组件,还是使用redux呢?

举个例子:
我觉得像这种高阶组件,完全就可以使用redux的connect来完成
图片描述


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

我想你可以先理解这两种技术的使用情境与目的,这会比较清楚。

高阶组件(HOC)只是一种样式,主要的目的是要让原本的组件扩充出其它功能,例如添加生命周期的一些代码等等。当然我说的比较简单,还有其它的目的例如组件的重覆利用等等,可以参考这篇博客中的说明。

Redux本身就有使用高阶组件(HOC)的样式,可以看到的是用在react-redux这个绑定器中,connect方法在这里面提供。但Redux的目的是管控整个应用中的状态,与高阶组件的目的不同,两者无法混为一谈。

如果你的目的只是要扩充组件,那就使用HOC样式是直觉的,但HOC是有细部的问题的,目前已知道的经过HOC的组件,原本组件中的静态方法会消失。这是其中一个解决方式: hoist-non-react-statics

如果你的目的是要管控整个应用领域的状态,就用Redux之类的Flux框架,HOC只是Redux使用的其中一个样式,它还有一些其它的样式,各自有不同的目题。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...