【发布时间】:2020-07-23 22:52:51
【问题描述】:
我正在学习反应,我正在尝试在动态获取请求中使用文本输入
我的组件被定义为...
export default testpage = () => {
const [state, setState] = React.useState({})
let handleChange = (event) => {
setState({input: event.target.value})
}
async function buttonClick (input) {
console.log(state.input)
await fetch(`http://localhost:8080/api/${input}`)
.then(response => response.json())
.then(data => setState({...state, data}))
render(
<input type={'text'} onChange={handleChange.bind(this)} />
<Button onClick={() => buttonClick(state.input)}>test</Button>
)
}
我的问题与 useState 异步更新有关。如果我输入一个数字,即。 4 进入输入框,然后点击按钮。我第一次单击按钮时,由于状态尚未更新,未定义被传递给 fetch 语句,因此获取失败。如果我再次单击该按钮,则获取成功。我已经阅读了 useEffect 钩子,但我无法弄清楚如何将它应用到我的情况。
【问题讨论】:
-
useState不能这样工作;您应该多次使用它,每个状态字段一次。const [input, setInput] = useState("");和const [data, setData] = useState({})等
标签: javascript reactjs react-native react-redux react-hooks