去年的React大會上,Dan大神介紹了Hooks,從那以後Hooks就引起了廣泛的關注。
今天在群裡看到有朋友在使用Hooks時,會報錯下圖中錯誤:
我在本地建立了專案(使用create-react-app
建立)果然出現了上圖中的錯誤。於是我去翻閱了React官方文件的說明,看到了以下說明:
Hooks are an upcoming feature that lets you use state and other React features without writing a class. They’re currently in React v16.7.0-alpha.
於是更改了package.json
檔案中的版本:
"dependencies": {
"react": "^16.7.0-alpha.2",
"react-dom": "^16.7.0-alpha.2"
}
複製程式碼
npm install
一下,執行之後發現,咦~還是報錯,但是換了一個錯誤提示:
對比和官方教程中的程式碼,也沒有什麼出入,但是總是會報這個錯誤。於是,將程式碼轉移到CodeSandBox上嘗試一下,沒想到可以順利執行。
後來思考了一下,覺得既然已經確定了是alpha
版本中可以使用Hooks,那麼為什麼還要在package.json
中使用^
來進行依賴模組的版本控制呢?索性刪掉^
:
"dependencies": {
"react": "16.7.0-alpha.2",
"react-dom": "16.7.0-alpha.2"
}
複製程式碼
npm install
一下下,發現可以正常執行了:
雖然問題已經解決了,但是還是不太明白其中的原理。希望瞭解原理的前輩能來解答一下,為什麼刪去^
之後就可以正常使用Hooks?
感謝各位,希望能幫大家解決一點點剛使用Hooks時遇到小問題。