Javascript 反应下拉选择
试图让我的下拉列表允许我选择一个选项,但它没有发生。无法找到有关此函数是否需要更多信息的进一步文档。不知道为什么我不能选择。我的代码:Javascript 反应下拉选择,javascript,reactjs,Javascript,Reactjs,试图让我的下拉列表允许我选择一个选项,但它没有发生。无法找到有关此函数是否需要更多信息的进一步文档。不知道为什么我不能选择。我的代码: import React from 'react'; import { Media, Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Button, } from 'reactstrap'; import PropTypes from 'prop-types'; class U
import React from 'react';
import {
Media,
Dropdown,
DropdownToggle,
DropdownMenu,
DropdownItem,
Button,
} from 'reactstrap';
import PropTypes from 'prop-types';
class UserPreview extends React.Component {
toggle = (user) => this.setState({DropdownOpen: !this.state.DropdownOpen});
state = {DropdownOpen: false}
render() {
let { user } = this.props;
return (
<tr className="user">
<td>
<Media>
<img
alt={`${user.name} avatar`}
className="avatar d-flex mr-3"
src={user.url} />
<Media body>{user.name}</Media>
</Media>
</td>
<td>
<Dropdown isOpen={this.state.DropdownOpen} toggle={this.toggle.bind(this, this.props.user)}>
<DropdownToggle caret>
Admin
</DropdownToggle>
<DropdownMenu>
<DropdownItem>Read</DropdownItem>
<DropdownItem>Write</DropdownItem>
</DropdownMenu>
</Dropdown>
</td>
<td>
<Button color="danger">Delete</Button>
</td>
</tr>
)
}
}
UserPreview.propTypes = {
user: PropTypes.shape({
name: PropTypes.string,
// TODO: add an url proptype.
url: PropTypes.string,
}).isRequired,
};
export default UserPreview;
从“React”导入React;
进口{
媒体
下拉列表,
下拉开关,
下拉菜单,
下拉项,
按钮
}来自“反应带”;
从“道具类型”导入道具类型;
类UserPreview扩展了React.Component{
toggle=(user)=>this.setState({DropdownOpen:!this.state.DropdownOpen});
状态={DropdownOpen:false}
render(){
让{user}=this.props;
返回(
{user.name}
管理
阅读
写
删除
)
}
}
UserPreview.propTypes={
用户:PropTypes.shape({
名称:PropTypes.string,
//TODO:添加url proptype。
url:PropTypes.string,
}).要求,
};
导出默认用户预览;
与使用选项选择不同,您在下拉列表中使用了什么,如图所示
更新代码:
import React from 'react';
import {
Media,
Dropdown,
DropdownToggle,
DropdownMenu,
DropdownItem,
Button,
} from 'reactstrap';
import PropTypes from 'prop-types';
class UserPreview extends React.Component {
toggle = (user) => this.setState({DropdownOpen: !this.state.DropdownOpen});
state = {DropdownOpen: false}
handleChange(e) {
this.Dropdown({
[e.target.name]: e.target.value
});
}
onChange = (e) => {
this.setState({item: e.target.value});
}
render() {
let { user } = this.props;
return (
<tr className="user">
<td>
<Media>
<img
alt={`${user.name} avatar`}
className="avatar d-flex mr-3"
src={user.url} />
<Media body>{user.name}</Media>
</Media>
</td>
<td>
<Dropdown isOpen={this.state.DropdownOpen} toggle={this.toggle.bind(this)}>
<DropdownToggle caret>
Admin
</DropdownToggle>
<DropdownMenu>
<DropdownItem>Read</DropdownItem>
<DropdownItem>Write</DropdownItem>
</DropdownMenu>
</Dropdown>
</td>
<td>
<Button color="danger">Delete</Button>
</td>
</tr>
)
}
}
UserPreview.propTypes = {
user: PropTypes.shape({
name: PropTypes.string,
// TODO: add an url proptype.
url: PropTypes.string,
}).isRequired,
};
export default UserPreview;
从“React”导入React;
进口{
媒体
下拉列表,
下拉开关,
下拉菜单,
下拉项,
按钮
}来自“反应带”;
从“道具类型”导入道具类型;
类UserPreview扩展了React.Component{
toggle=(user)=>this.setState({DropdownOpen:!this.state.DropdownOpen});
状态={DropdownOpen:false}
手变(e){
这个,下拉列表({
[e.target.name]:e.target.value
});
}
onChange=(e)=>{
this.setState({item:e.target.value});
}
render(){
让{user}=this.props;
返回(
{user.name}
管理
阅读
写
删除
)
}
}
UserPreview.propTypes={
用户:PropTypes.shape({
名称:PropTypes.string,
//TODO:添加url proptype。
url:PropTypes.string,
}).要求,
};
导出默认用户预览;
可能是开关?看起来你宣布绑定错误了
下面是使用toggle={this.toggle.bind(this)}
这将超出渲染本身的功能范围
toggle (e) {
this.setState (
toggle: true
);
}
此外,要保留该值,您需要在更改处理程序中添加
e.target.value
,因为这是一个需要保存的事件。您可以创建一个代码段吗?它应该打开,而不是在下拉列表中打开,请参阅下拉列表的选项。这是代码段,我使用了这些按钮。看看这里,你可以看到我的镜子这些:我不完全得到你到底在寻找什么?能够从reactstrap下拉列表中选择,其中一个选项。现在,下拉列表可以工作,但如果我单击某个选项,它不会保留或选择该值。那么它应该是什么样子?我没有看到任何错误,但我很容易出错。考虑编写一个更改处理程序,切换只应该是代码> ToGruts= {这个。切换。绑定(这个)} /代码>它看起来像是在使用FLUX?谢谢。这就是事件发生的方式吗?是否应在render中调用此函数?你可以参考任何例子吗?我可以写一个如何处理这个事件的例子。更改处理程序应该在render之外调用。在我看来,它可以通过以下两种方式之一进行处理。我想到的是:handleChange(e){this.setState({[e.target.name]:e.target.value});
}或this:onChange=(e)=>{this.setState({item:e.target.value});}只是不确定如何让它们访问它需要的内容。即使这是一个组件的名称,我也必须应用它吗?