我正在尝试在项目中使用新的react功能挂钩。我已经将React版本更新为 16.8.1 ,但是它给出了错误
未捕获的错误:钩子只能在容器的主体内部调用 功能组件
package.json
"react": "^16.8.1",
"react-app-polyfill": "^0.2.0",
"react-dev-utils": "^7.0.1",
"react-dom": "^16.7.0",
index.js
function selectDoc() {
const [selectedOrg, handleOrgChange] = useState("");
return (
<div className="select-info">
<div className="select-showcase">
<div style={{ marginRight: '20px' }}>
<div>With Search</div>
<Select
items={orgsList}
selectedItem={selectedOrg}
handleItemChange={handleOrgChange}
/>
</div>
</div>
</div>
);
}
export default selectDoc;
答案 0 :(得分:2)
您的代码似乎是正确的。但是,您尚未将react-dom
更新为与16.8.1
相同的版本,即React
,因此您看到的这个错误起初有点误导。 react
和react-dom
应该使用相同的版本,以便能够正确使用React功能。
运行
yarn upgrade react-dom@16.8.1
将react-dom
升级到v16.8.1
如果您使用npm
而不是用毛线,则可以运行
npm update --save react-dom@16.8.1
答案 1 :(得分:0)
就我而言,问题实际上不在于组件本身,而在于路径。
相反:
<Route path="/login" exact render={MyLoginComponent} />
应该是
<Route path="/login" exact render={(props) => <MyLoginComponent {...props} />} />
从“渲染”切换到“组件”也可以。