【发布时间】:2019-12-03 08:23:37
【问题描述】:
我有一个带有 useState 钩子的 React 功能组件。
我将此函数组件用作index.html 内的脚本标记的src。
当我在这个功能组件的末尾添加一个render 方法时,它会抛出一个错误,指出无效的钩子。
我创建了一个index.html,并在其中将welcome.js 指定为脚本标签的源。当这个脚本执行时,它会调用函数welcome.js。
在Welcome 函数中,如果我使用状态挂钩,则会引发错误:
“无效的钩子调用。只能在函数组件的主体内部调用钩子”
<script src="./Welcome.js"> </script>
welcome.js:
import React, {useState} from "react";
import {render} from "react-dom";
const Welcome = () => {
const [name, setName] = useState("name");
return(
<div>
<label htmlFor="name">Name</label>
<input
id="name"
value={name}
onChange= {e=>setName(e.target.value)}
>
</input>
</div>
)
}
render(<Welcome/>, document.getElementById("root"));
我想知道为什么我不能在这里使用welcome.js 中的状态挂钩。我们不能将状态钩子与render 方法一起使用吗?
【问题讨论】:
-
@MeetZaveri
render是从react-dom导入的 -
是的,这是个错误
-
@AyyappaGollu 这是什么版本的反应?你的捆绑器是什么? I can't reproduce it
-
@JohnRuddell 我正在使用 react@16.8.6。包裹打包机。
-
您是否有可能使用两个或多个不同版本的 react?在这种情况下,这是一个known problem。
标签: javascript reactjs react-hooks