javascript - React.js 更改下拉值
问题描述
我正在尝试使用 React useState 来更改下拉值的值,但看起来它在调用 onClick 后刷新了页面。例如,当我单击选项 B 时,它将 selectedValue 状态更改为 B,然后重新渲染页面并将其重置为默认值。我的问题是为什么它重新呈现页面?以及如何更改下拉值?
import React, {useState} from 'react';
function InputDropdown(props) {
const [selectedValue, setSelectedValue] = useState("");
return (
<div className="input-group">
<input type="text" className="form-control" />
<div className="input-group-append">
<button type="button" className="btn btn-outline-secondary">{selectedValue}</button>
<button type="button" className="btn btn-outline-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown">
<span className="sr-only">Toggle Dropdown</span>
</button>
<div className="dropdown-menu">
<a class="dropdown-item" href="#" onClick={() =>setSelectedValue("A")}>A</a>
<a class="dropdown-item" href="#" onClick={() =>setSelectedValue("B")}>B</a>
<a class="dropdown-item" href="#" onClick={() =>setSelectedValue("C")}>C</a>
</div>
</div>
</div>
)
}
解决方案
在 React 中,如果任何状态值发生变化,组件将被重新渲染。这就是您的新状态值将在页面上刷新的原因。
在您的示例中,selectedValue
开头为空。
当您选择一个值时,您调用了setSelectedValue()
(请注意您的选项 B 值是 C 可能是一个错误)
它改变了selectedValue
本地状态的值,组件重新渲染。这就是为什么重新渲染后,在您的按钮上的值更改为您选择的值。
推荐阅读
- lucene - 具有相同术语精确、通配符和模糊匹配的 Lucene 查询
- for-loop - 将 ksh for 循环转换为异步
- android - Android 5.0 录屏时如何自动获取权限?
- xmgrace - 通过 xmgrace 批处理生成条形图
- html - BS4 卡不适合父 div
- python - Python中的系列和一维数据框之间有区别吗
- kubernetes - 如何快速使 Kubernetes 就绪探测失败?
- php - Symfony/Doctrine 通知:未定义索引:000*
- firebase - Flutter/Firebase 实时数据库 - 处理网络错误
- wordpress - 如何仅以美元将货币传递到付款网关