简体   繁体   English

React.js 更改下拉值

[英]React.js to change dropdown value

I'm trying to use React useState to change the value of dropdown value, but it looks like it refreshes the page after onClick has been called.我正在尝试使用 React useState 来更改下拉值的值,但看起来它在调用 onClick 后刷新了页面。 When I click for example on option B, it changes selectedValue state to B, then it re-render the page and reset it to default value.例如,当我单击选项 B 时,它将 selectedValue state 更改为 B,然后重新渲染页面并将其重置为默认值。 My question is why it re-renders the page?我的问题是为什么它重新呈现页面? And how can change the dropdown value?以及如何更改下拉值?

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>
)
}

In React, if any state value changed, the component will be re-rendered.在 React 中,如果任何 state 值发生变化,组件将被重新渲染。 That's why your new state value will be refreshed on the page.这就是您的新 state 值将在页面上刷新的原因。

In your example, selectedValue is empty at the beginning.在您的示例中, selectedValue开头为空。

when you selected a value, you called setSelectedValue() (beware your option B value is C may be a bug)当您选择一个值时,您调用了setSelectedValue() (请注意您的选项 B 值是 C 可能是一个错误)

it changed the selectedValue local state's value, the component re-rendreed.它改变了selectedValue本地状态的值,组件重新渲染。 That's why after re-rendered, on your button the value changed to your selected value.这就是为什么重新渲染后,在您的按钮上的值更改为您选择的值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM