javascript - 由于未知原因,React 钩子无法使用 setState
问题描述
在这一行。我添加了一个 onChange 属性来更改文本框状态并更新它。但它不起作用,我不知道为什么,因为我在其他项目中尝试了相同/类似的东西并且它工作正常。我可以使用多少个钩子有限制吗?将 setState 作为具有多个参数的对象而不是多个钩子会更好吗?
<input value={textbox} onChange={e => setTextBox(e.target.value)}></input>
以下是完整代码
import React, { useState } from 'react'
export const StartPage = () => {
const [players, SetPlayers] = useState(["jaw", "weihan"])
const [view, setView] = useState(selection)
//const [roles, SetRoles] = useState(null)
const [textbox, setTextBox] = useState("")
const selection = (
<div>
<button onClick={() => setView(addPlayer)}> Create Game </button>
<button> Join Game </button>
</div>
)
const addPlayer = (
<div className="add-player">
<form>
<input value={textbox} onChange={e => setTextBox(e.target.value)}></input>
<button type="submit" > Add more</button>
</form>
<ul>
{players.map(item => <li>{item}</li>)}
</ul>
</div>
)
return (
<section id="start-page">
{view}
</section>
)
}
解决方案
这是你想要实现的吗?
const [players, SetPlayers] = useState(['jaw', 'weihan']);
const [textbox, setTextBox] = useState('');
const [showPlayersForm, setShowPlayersForm] = useState(false);
const handleSubmit = e => {
e.preventDefault();
SetPlayers(prevState => [...prevState, textbox]);
setTextBox('');
};
const addPlayer = (
<div className='add-player'>
<form onSubmit={handleSubmit}>
<input value={textbox} onChange={e => setTextBox(e.target.value)} />
<button type='submit'> Add more</button>
</form>
<ul>
// use key when you loop trough items
{players.map((item, index) => (
<li key={index}>{item}</li>
))}
</ul>
</div>
);
return (
<div>
<button onClick={() => setShowPlayersForm(true)}>Create game</button>
<button> Join Game </button>
{showPlayersForm && addPlayer}
</div>
);
推荐阅读
- ballerina - Ballerina - 运行模拟测试时出错
- mysql - 如何从SQL中的字符串中提取项目列表
- html - 减少 CSS 网格 UL/LI 中的差距
- css - Angular 将 css 传递给子组件 - 最佳实践
- tensorflow - 在 Tensorflow 的输出中获取 nan 值
- sql - 在 SQL Server v12 中使用备份到 URL 时覆盖 blob 文件
- c# - 获取类的“所有者”,如果它是另一个类的属性
- ffmpeg - MP4 容器中的 H.264 编码流在 WMP12 Windows 7 中无法正常播放
- c# - 登录另一个进程
- apache-kafka-connect - Kafka 连接 CockroachDB