ReactJS-在组件之间传递状态更改
我有以下组件:ReactJS-在组件之间传递状态更改,reactjs,Reactjs,我有以下组件: render(){ return( {/* whenClicked is a dropdown property /*} <button onClick={this.props.whenClicked} type="button"> ..... </button> ) constructor(props) { super(props); this.state = { open
render(){
return(
{/* whenClicked is a dropdown property /*}
<button onClick={this.props.whenClicked} type="button">
.....
</button>
)
constructor(props) {
super(props);
this.state = {
open:false
}
}
render(){
return(
{/* toggle between show and hide /*}
<ul className={"dropdown-menu " + (this.state.open ? 'show' : '')}>
{this.props.dropItems.map(function(item){
......
})}
</ul>
)
}
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
// added this as an update to my question per ssorallen
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} />
......
{/* // prop.items comes from app.jsx */}
<UnorderedList dropItems={this.props.items} />
</div>
)
} }
module.exports = Dropdown;
....
var selectItems = {
title : "Choose a Fruit",
items : [
"Cantaloupe",
.........
]
}
<Dropdown items={selectItems.items} multiSelect={true} title={selectItems.title} />
....
'use strict';
var React = require('react');
class UnorderedList extends React.Component{
constructor(props) {
super(props);
}
render(){
var listItemStyle = {
cursor:'pointer'
};
return(
<ul className={"dropdown-menu " + (this.props.toggleState ? 'show' : '')} role='menu' aria-labelledby='dropdownMenu1'>
{this.props.dropItems.map(function(item){
return (<li style={listItemStyle} key={item}><a>{item}</a></li>)
})}
</ul>
)
} }
module.exports = UnorderedList;
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} className="btn-warning" title={this.props.title} subTitleClassName="caret"></Button>
<UnorderedList dropItems={this.props.items} toggleState={this.state.open} />
</div>
)
}
}
module.exports = Dropdown;
由于我的按钮组件是通用的,它的事件也是通用的,我的无序列表也是如此;设置事件的是下拉列表。以下是两者的相关代码:
按钮组件:
render(){
return(
{/* whenClicked is a dropdown property /*}
<button onClick={this.props.whenClicked} type="button">
.....
</button>
)
constructor(props) {
super(props);
this.state = {
open:false
}
}
render(){
return(
{/* toggle between show and hide /*}
<ul className={"dropdown-menu " + (this.state.open ? 'show' : '')}>
{this.props.dropItems.map(function(item){
......
})}
</ul>
)
}
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
// added this as an update to my question per ssorallen
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} />
......
{/* // prop.items comes from app.jsx */}
<UnorderedList dropItems={this.props.items} />
</div>
)
} }
module.exports = Dropdown;
....
var selectItems = {
title : "Choose a Fruit",
items : [
"Cantaloupe",
.........
]
}
<Dropdown items={selectItems.items} multiSelect={true} title={selectItems.title} />
....
'use strict';
var React = require('react');
class UnorderedList extends React.Component{
constructor(props) {
super(props);
}
render(){
var listItemStyle = {
cursor:'pointer'
};
return(
<ul className={"dropdown-menu " + (this.props.toggleState ? 'show' : '')} role='menu' aria-labelledby='dropdownMenu1'>
{this.props.dropItems.map(function(item){
return (<li style={listItemStyle} key={item}><a>{item}</a></li>)
})}
</ul>
)
} }
module.exports = UnorderedList;
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} className="btn-warning" title={this.props.title} subTitleClassName="caret"></Button>
<UnorderedList dropItems={this.props.items} toggleState={this.state.open} />
</div>
)
}
}
module.exports = Dropdown;
所有这些都有效
我的问题:
render(){
return(
{/* whenClicked is a dropdown property /*}
<button onClick={this.props.whenClicked} type="button">
.....
</button>
)
constructor(props) {
super(props);
this.state = {
open:false
}
}
render(){
return(
{/* toggle between show and hide /*}
<ul className={"dropdown-menu " + (this.state.open ? 'show' : '')}>
{this.props.dropItems.map(function(item){
......
})}
</ul>
)
}
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
// added this as an update to my question per ssorallen
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} />
......
{/* // prop.items comes from app.jsx */}
<UnorderedList dropItems={this.props.items} />
</div>
)
} }
module.exports = Dropdown;
....
var selectItems = {
title : "Choose a Fruit",
items : [
"Cantaloupe",
.........
]
}
<Dropdown items={selectItems.items} multiSelect={true} title={selectItems.title} />
....
'use strict';
var React = require('react');
class UnorderedList extends React.Component{
constructor(props) {
super(props);
}
render(){
var listItemStyle = {
cursor:'pointer'
};
return(
<ul className={"dropdown-menu " + (this.props.toggleState ? 'show' : '')} role='menu' aria-labelledby='dropdownMenu1'>
{this.props.dropItems.map(function(item){
return (<li style={listItemStyle} key={item}><a>{item}</a></li>)
})}
</ul>
)
} }
module.exports = UnorderedList;
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} className="btn-warning" title={this.props.title} subTitleClassName="caret"></Button>
<UnorderedList dropItems={this.props.items} toggleState={this.state.open} />
</div>
)
}
}
module.exports = Dropdown;
单击按钮时,下拉列表的whenClicked事件将触发并切换打开状态
假设该事件触发无序列表,使其打开状态在true和false之间切换,从而从其类“下拉菜单”中添加/删除show
当state.open被更改时,有人能告诉我如何让下拉组件与无序列表通信吗
我得到的错误是:
未捕获类型错误:在扩展
React.Component
时,无法读取未定义的属性“setState”,使用ES6类,成员方法不再像向React.createClass
传递对象时那样“自动绑定”。您可以通过以下方式获得习惯的行为:
类下拉列表扩展了React.Component{
构造函数(){
...
this.handleClick=this.handleClick.bind(this);
}
render(){
...
...
}
}
使用ES6类扩展React.Component
时,成员方法不再像向React.createClass传递对象时那样“自动绑定”。您可以通过以下方式获得习惯的行为:
类下拉列表扩展了React.Component{
构造函数(){
...
this.handleClick=this.handleClick.bind(this);
}
render(){
...
...
}
}
解决方案:
render(){
return(
{/* whenClicked is a dropdown property /*}
<button onClick={this.props.whenClicked} type="button">
.....
</button>
)
constructor(props) {
super(props);
this.state = {
open:false
}
}
render(){
return(
{/* toggle between show and hide /*}
<ul className={"dropdown-menu " + (this.state.open ? 'show' : '')}>
{this.props.dropItems.map(function(item){
......
})}
</ul>
)
}
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
// added this as an update to my question per ssorallen
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} />
......
{/* // prop.items comes from app.jsx */}
<UnorderedList dropItems={this.props.items} />
</div>
)
} }
module.exports = Dropdown;
....
var selectItems = {
title : "Choose a Fruit",
items : [
"Cantaloupe",
.........
]
}
<Dropdown items={selectItems.items} multiSelect={true} title={selectItems.title} />
....
'use strict';
var React = require('react');
class UnorderedList extends React.Component{
constructor(props) {
super(props);
}
render(){
var listItemStyle = {
cursor:'pointer'
};
return(
<ul className={"dropdown-menu " + (this.props.toggleState ? 'show' : '')} role='menu' aria-labelledby='dropdownMenu1'>
{this.props.dropItems.map(function(item){
return (<li style={listItemStyle} key={item}><a>{item}</a></li>)
})}
</ul>
)
} }
module.exports = UnorderedList;
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} className="btn-warning" title={this.props.title} subTitleClassName="caret"></Button>
<UnorderedList dropItems={this.props.items} toggleState={this.state.open} />
</div>
)
}
}
module.exports = Dropdown;
已从无序列表类中完全删除状态李>
在下拉列表中为无序列表创建带状态值的toggleState属性
将该属性传递给无序列表的“下拉菜单”类
无序列表类:
render(){
return(
{/* whenClicked is a dropdown property /*}
<button onClick={this.props.whenClicked} type="button">
.....
</button>
)
constructor(props) {
super(props);
this.state = {
open:false
}
}
render(){
return(
{/* toggle between show and hide /*}
<ul className={"dropdown-menu " + (this.state.open ? 'show' : '')}>
{this.props.dropItems.map(function(item){
......
})}
</ul>
)
}
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
// added this as an update to my question per ssorallen
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} />
......
{/* // prop.items comes from app.jsx */}
<UnorderedList dropItems={this.props.items} />
</div>
)
} }
module.exports = Dropdown;
....
var selectItems = {
title : "Choose a Fruit",
items : [
"Cantaloupe",
.........
]
}
<Dropdown items={selectItems.items} multiSelect={true} title={selectItems.title} />
....
'use strict';
var React = require('react');
class UnorderedList extends React.Component{
constructor(props) {
super(props);
}
render(){
var listItemStyle = {
cursor:'pointer'
};
return(
<ul className={"dropdown-menu " + (this.props.toggleState ? 'show' : '')} role='menu' aria-labelledby='dropdownMenu1'>
{this.props.dropItems.map(function(item){
return (<li style={listItemStyle} key={item}><a>{item}</a></li>)
})}
</ul>
)
} }
module.exports = UnorderedList;
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} className="btn-warning" title={this.props.title} subTitleClassName="caret"></Button>
<UnorderedList dropItems={this.props.items} toggleState={this.state.open} />
</div>
)
}
}
module.exports = Dropdown;
“严格使用”;
var React=要求('React');
类无序列表扩展了React.Component{
建造师(道具){
超级(道具);
}
render(){
变量listItemStyle={
光标:'指针'
};
返回(
{this.props.dropItems.map(函数(项)){
返回(- {item}
)
})}
)
} }
module.exports=无序列表;
下拉类:
render(){
return(
{/* whenClicked is a dropdown property /*}
<button onClick={this.props.whenClicked} type="button">
.....
</button>
)
constructor(props) {
super(props);
this.state = {
open:false
}
}
render(){
return(
{/* toggle between show and hide /*}
<ul className={"dropdown-menu " + (this.state.open ? 'show' : '')}>
{this.props.dropItems.map(function(item){
......
})}
</ul>
)
}
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
// added this as an update to my question per ssorallen
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} />
......
{/* // prop.items comes from app.jsx */}
<UnorderedList dropItems={this.props.items} />
</div>
)
} }
module.exports = Dropdown;
....
var selectItems = {
title : "Choose a Fruit",
items : [
"Cantaloupe",
.........
]
}
<Dropdown items={selectItems.items} multiSelect={true} title={selectItems.title} />
....
'use strict';
var React = require('react');
class UnorderedList extends React.Component{
constructor(props) {
super(props);
}
render(){
var listItemStyle = {
cursor:'pointer'
};
return(
<ul className={"dropdown-menu " + (this.props.toggleState ? 'show' : '')} role='menu' aria-labelledby='dropdownMenu1'>
{this.props.dropItems.map(function(item){
return (<li style={listItemStyle} key={item}><a>{item}</a></li>)
})}
</ul>
)
} }
module.exports = UnorderedList;
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} className="btn-warning" title={this.props.title} subTitleClassName="caret"></Button>
<UnorderedList dropItems={this.props.items} toggleState={this.state.open} />
</div>
)
}
}
module.exports = Dropdown;
“严格使用”;
var React=require('React'),
按钮=需要(“./按钮”),
无序列表=需要('./无序列表');
类下拉列表扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
开放:假
}
this.handleClick=this.handleClick.bind(this)
}
handleClick(){
this.setState({open:!this.state.open});
}
render(){
返回(
{/*whenClicked本身是属性而不是事件。*/}
)
}
}
module.exports=下拉列表;
解决方案:
render(){
return(
{/* whenClicked is a dropdown property /*}
<button onClick={this.props.whenClicked} type="button">
.....
</button>
)
constructor(props) {
super(props);
this.state = {
open:false
}
}
render(){
return(
{/* toggle between show and hide /*}
<ul className={"dropdown-menu " + (this.state.open ? 'show' : '')}>
{this.props.dropItems.map(function(item){
......
})}
</ul>
)
}
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
// added this as an update to my question per ssorallen
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} />
......
{/* // prop.items comes from app.jsx */}
<UnorderedList dropItems={this.props.items} />
</div>
)
} }
module.exports = Dropdown;
....
var selectItems = {
title : "Choose a Fruit",
items : [
"Cantaloupe",
.........
]
}
<Dropdown items={selectItems.items} multiSelect={true} title={selectItems.title} />
....
'use strict';
var React = require('react');
class UnorderedList extends React.Component{
constructor(props) {
super(props);
}
render(){
var listItemStyle = {
cursor:'pointer'
};
return(
<ul className={"dropdown-menu " + (this.props.toggleState ? 'show' : '')} role='menu' aria-labelledby='dropdownMenu1'>
{this.props.dropItems.map(function(item){
return (<li style={listItemStyle} key={item}><a>{item}</a></li>)
})}
</ul>
)
} }
module.exports = UnorderedList;
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} className="btn-warning" title={this.props.title} subTitleClassName="caret"></Button>
<UnorderedList dropItems={this.props.items} toggleState={this.state.open} />
</div>
)
}
}
module.exports = Dropdown;
已从无序列表类中完全删除状态李>
在下拉列表中为无序列表创建带状态值的toggleState属性
将该属性传递给无序列表的“下拉菜单”类
无序列表类:
render(){
return(
{/* whenClicked is a dropdown property /*}
<button onClick={this.props.whenClicked} type="button">
.....
</button>
)
constructor(props) {
super(props);
this.state = {
open:false
}
}
render(){
return(
{/* toggle between show and hide /*}
<ul className={"dropdown-menu " + (this.state.open ? 'show' : '')}>
{this.props.dropItems.map(function(item){
......
})}
</ul>
)
}
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
// added this as an update to my question per ssorallen
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} />
......
{/* // prop.items comes from app.jsx */}
<UnorderedList dropItems={this.props.items} />
</div>
)
} }
module.exports = Dropdown;
....
var selectItems = {
title : "Choose a Fruit",
items : [
"Cantaloupe",
.........
]
}
<Dropdown items={selectItems.items} multiSelect={true} title={selectItems.title} />
....
'use strict';
var React = require('react');
class UnorderedList extends React.Component{
constructor(props) {
super(props);
}
render(){
var listItemStyle = {
cursor:'pointer'
};
return(
<ul className={"dropdown-menu " + (this.props.toggleState ? 'show' : '')} role='menu' aria-labelledby='dropdownMenu1'>
{this.props.dropItems.map(function(item){
return (<li style={listItemStyle} key={item}><a>{item}</a></li>)
})}
</ul>
)
} }
module.exports = UnorderedList;
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} className="btn-warning" title={this.props.title} subTitleClassName="caret"></Button>
<UnorderedList dropItems={this.props.items} toggleState={this.state.open} />
</div>
)
}
}
module.exports = Dropdown;
“严格使用”;
var React=要求('React');
类无序列表扩展了React.Component{
建造师(道具){
超级(道具);
}
render(){
变量listItemStyle={
光标:'指针'
};
返回(
{this.props.dropItems.map(函数(项)){
返回(- {item}
)
})}
)
} }
module.exports=无序列表;
下拉类:
render(){
return(
{/* whenClicked is a dropdown property /*}
<button onClick={this.props.whenClicked} type="button">
.....
</button>
)
constructor(props) {
super(props);
this.state = {
open:false
}
}
render(){
return(
{/* toggle between show and hide /*}
<ul className={"dropdown-menu " + (this.state.open ? 'show' : '')}>
{this.props.dropItems.map(function(item){
......
})}
</ul>
)
}
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
// added this as an update to my question per ssorallen
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} />
......
{/* // prop.items comes from app.jsx */}
<UnorderedList dropItems={this.props.items} />
</div>
)
} }
module.exports = Dropdown;
....
var selectItems = {
title : "Choose a Fruit",
items : [
"Cantaloupe",
.........
]
}
<Dropdown items={selectItems.items} multiSelect={true} title={selectItems.title} />
....
'use strict';
var React = require('react');
class UnorderedList extends React.Component{
constructor(props) {
super(props);
}
render(){
var listItemStyle = {
cursor:'pointer'
};
return(
<ul className={"dropdown-menu " + (this.props.toggleState ? 'show' : '')} role='menu' aria-labelledby='dropdownMenu1'>
{this.props.dropItems.map(function(item){
return (<li style={listItemStyle} key={item}><a>{item}</a></li>)
})}
</ul>
)
} }
module.exports = UnorderedList;
'use strict';
var React = require('react'),
Button = require('./button'),
UnorderedList = require('./unordered-list');
class Dropdown extends React.Component{
constructor(props) {
super(props);
this.state = {
open:false
}
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({open : !this.state.open});
}
render(){
return(
<div className="dropdown">
{/* whenClicked is a property not an event, per se. */}
<Button whenClicked={this.handleClick} className="btn-warning" title={this.props.title} subTitleClassName="caret"></Button>
<UnorderedList dropItems={this.props.items} toggleState={this.state.open} />
</div>
)
}
}
module.exports = Dropdown;
“严格使用”;
var React=require('React'),
按钮=需要(“./按钮”),
无序列表=需要('./无序列表');
类下拉列表扩展了React.Component{
建造师(道具){
超级(道具);
此.state={
开放:假
}
this.handleClick=this.handleClick.bind(this)
}
handleClick(){
this.setState({open:!this.state.open});
}
render(){
返回(
{/*whenClicked本身是属性而不是事件。*/}
)
}
}
module.exports=下拉列表;
OK,我将“this.handleClick=this.handleClick.bind(this)”添加到下拉列表的构造函数中,不再出现错误,但无序列表不会改变其打开状态。我不知道您的示例中的div元素是什么。我看不出您的建议在哪里告诉我的无序列表切换它的打开状态。好的,我在下拉列表的构造函数中添加了“this.handleClick=this.handleClick.bind(this)”,并且不再得到错误,但无序列表没有改变它的打开状态。我不知道您的示例中的div元素是什么。我看不出您的建议是在告诉我的无序列表将其切换为打开状态。如果他们解决了您的问题,您真的应该接受这两个答案中的一个(我相信他们确实接受了)。就我个人而言,我认为艾伦回答你最初的问题最好。那些家伙花了些时间回答:“你欠他们那么多……”。。!如果他们解决了你的问题(我相信他们解决了),你真的应该接受这两个答案中的一个。就我个人而言,我认为艾伦回答你最好的答案