bounty将在2天后过期。回答此问题可获得+50的声望奖励。Sachin希望吸引更多人关注此问题:解释为什么这种导入方式更好,推荐的导入方式是什么,为什么?
我对React
还是个新手,仍然对custom-hooks
感到困惑。我看到了一段代码,其中创建了一个自定义钩子来处理组件导入。useComponentPalette.js
import {TodoEditor} from './components/TodoEditor'
import {TodoItem} from './components/TodoItem'
import {TodoList} from './components/TodoList'
import {CheckBox} from './components/CheckBox'
const defaultComponents = {
TodoEditor,
TodoItem,
TodoList,
CheckBox
}
export function useComponentPalette(){
return defaultComponents
}
为了使用钩子,
const {TodoItem, TodoList, Checkbox } = useComponentPalette()
**我的问题:-**这种方法是否比组件中的常规导入有任何优势?或者这是一种反模式?
我通常如何导入组件如下
import {TodoEditor} from './components/TodoEditor'
import {TodoItem} from './components/TodoItem'
import {TodoList} from './components/TodoList'
import {CheckBox} from './components/CheckBox'
function App(){
return(
<>
<TodoList/>
</>
)
}
3条答案
按热度按时间wfsdck301#
这不是一个好主意,使用React挂钩像这样,你可以得到同样的结果没有React挂钩
lp0sw83n2#
我使用react-hooks的方式是为了让我的代码更枯燥,增加它的可读性,所以react-hooks不太适合这种用法。
apeeds0o3#
你好
在我的选择中,ReactJS使用钩子来管理在组件之间重用有状态逻辑。换句话说,钩子在封装状态和共享逻辑方面做得很好。如果你想用这些组件做一些有状态逻辑或基于条件的逻辑,那么这是可以的。但是如果你在给定的组件中使用没有条件的逻辑。那么,这对于制作自定义钩子是无用的。你可以用一种更简单的方式在没有自定义钩子的情况下做到这一点。
这里有一个简单的方法来做到这一点:-
在components文件夹中。我创建索引文件,这是我所有导出组件的入口点
在这个文件中,我导出了所有的组件,如您所见。
我用这样的组件。它更好的方式。在我的选择。
import { Header, Footer, Sider } from "./components"