如何在单击时正确更改react-bootstrap DropdownButton的标题?

时间:2019-05-31 03:15:53

标签: javascript reactjs drop-down-menu react-bootstrap

我试图在单击Dropdown.Item时更改DropdownButton中显示的文本/标题。

我试图将各种参数传递给changeValue方法/函数,但到目前为止还没有解决方案。使用这种方法, text 函数中的参数似乎为空。因此,状态属性dropDownValue变为空,因此单击项目后下拉菜单中没有标题。

import React from 'react';
import './App.css';
import DropdownButton from 'react-bootstrap/DropdownButton';
import Dropdown from 'react-bootstrap/Dropdown';

class App extends React.Component {
  constructor() {
    super();

    this.state = {
      dropDownValue: "Select an item"
    }
  }

  changeValue(text) {
    this.setState({dropDownValue: text})
  }

  render() {
    return (
      <div className="App">
        <header className="App-header">
        </header>
        <div>
        <DropdownButton id="dropdown-item-button" title={this.state.dropDownValue} className="format"> 
          <Dropdown.Item as="button"><div onClick={() => this.changeValue(this.textContent)}>Item #1</div></Dropdown.Item>
          <Dropdown.Item as="button"><div onClick={() => this.changeValue(this.textContent)}>Item #2</div></Dropdown.Item>
          <Dropdown.Item as="button"><div onClick={() => this.changeValue(this.textContent)}>Item #3</div></Dropdown.Item>
        </DropdownButton>
        </div>
      </div>
    );
  }
}

export default App;

3 个答案:

答案 0 :(得分:0)

只需更改此

<Dropdown.Item as="button"><div onClick={() => this.changeValue(this.textContent)}>Item #1</div></Dropdown.Item>

与此

<Dropdown.Item as="button"><div onClick={(e) => this.changeValue(e.target.textContent)}>Item #1</div></Dropdown.Item>

答案 1 :(得分:0)

我只是这样做,它对我有用

<Dropdown.Item onClick={() => this.changeValue(e)}> Title </Dropdown.Item>

答案 2 :(得分:-1)

我没有使用react-bootstrap的经验,但是想法应该是相同的。首先,您确定自己的状态。

df=pd.DataFrame(Input_data)
notes=[];temp=[];flag='';value='';c=0;chk_star='yes'
for i,row in df.iterrows():
    row[0]=str(row[0])
    if '*' in row[0].strip()[:5] and chk_star=='yes':   
        value=row[0].strip()
        temp=temp+[value]
        value=''
        continue

    if '(' in row[0].strip()[:5]:
        chk_star='no'
        temp=temp+[value]
        value='';c=0
        flag='continue'
        value=row[0].strip()
    if flag=='continue' and '(' not in row[0][:5] : 
        value=value+row[0]
        c=c+1
    if c>4:
        temp=temp+[value] 
        print "111",value,temp
        break
if '' in temp:
    temp.remove('')
df=pd.DataFrame({'notes':temp})     

然后您将输入字段。...注意值({this.state.value1})。然后调用您的函数以检测何时进行了更改。

state = {
        value1: '',
        value2: ''
    };

在输入发生任何更改时获取您的值,并将其设置为您的状态。

<input
  name="value1"
  value={this.state.value1}
  onChange={e => this.onChange(e)}  
/>
<input
  name="value2"
  value={this.state.value2}
  onChange={e => this.onChange(e)}
/>

然后使用您的更新状态显示任何信息,提交表格等...