当前位置: 首页 > 知识库问答 >
问题:

设置状态[duplicate]上未定义此值

尉迟安民
2023-03-14

我知道这是一个具有约束力的问题,但我不确定在哪里绑定它。我尝试了一些不同的方法。

问题发生在应用程序上。\u当用户更改下拉框时选择。我希望它更新状态,以强制日历组件重新加载。

应用程序

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

        this.state = {
            room: "A"
        }
    }
    _select(e) {
        this.setState({
            room: e.target.value
        });
    }
    render() {
        return (
            <div>
                <Selector select={this._select}/>
                <Calendar room={this.state.room}/>
            </div>
        );
    }
};

export default App;

选择器

const Selector = (props) => {
    var items = API.rooms.map((item) => {
        return(
            <option value={item.room}>Study Room {item.room}</option>
        );
    });

    return (
        <div className="mat-section mat-section--m mat--color-primary">
            <div class="mat-section__body">
                <div class="custom-select">
                    <select onChange={props.select}>
                        {items}
                    </select>
                    <div class="custom-select__arrow"></div>
                </div>
            </div>
        </div>
    );      
}

export default Selector;

共有2个答案

颜啸
2023-03-14

您需要将this绑定到_select(),以便在您的方法中定义它!

constructor() {
    super();

    this.state = {
        room: "A"
    };

    this._select = this._select.bind(this);
}

如果使用箭头函数,绑定将自动完成,这也是一个选项。

干杯

东郭昌胤
2023-03-14

在构造函数中

this._select = this._select.bind(this);

或es6定义的函数

const _select = () => {....}
 类似资料:
  • 我有一个处理程序,在输入字段发生变化时触发。但是,当我将状态日志记录到控制台resData是'未定义'?这是不可能的,因为console.log(身体)确实返回结果。

  • 问题内容: 我知道将状态设置为打开是一种反模式,应该将状态设置为打开,但是假设我想将标记数量的长度设置为状态。在那种情况下,我无法将状态设置为on,因为在该阶段可能未安装标签。那么,这里最好的选择是什么?如果将状态设置为开启,会好吗? 问题答案: 这不是一个反模式调用在。实际上,ReactJS在其文档中提供了一个示例: 您应该在componentDidMount生命周期方法中使用AJAX调用填充数

  • 我在努力什么? 尝试在状态中设置输入类型文本的值 到目前为止我搜索了什么? 组件

  • 注:在 Status.Code 中通过枚举的方式定义状态码,这些状态码的定义非常的有参考和借鉴价值,因此详细翻译了一遍。 定义和注释 OK(0):成功 操作成功完成 CANCELLED(1):被取消 操作被取消(通常是被调用者取消) UNKNOWN(2):未知 未知错误。这个错误可能被返回的一个例子是,如果从其他地址空间接收到的状态值属于在当前地址空间不知道的错误空间(注:看不懂。。。)。此外,A

  • 大多是前端的新产品,在Vue绝对是新产品。我试图从URL中读取查询参数。以下如何从Vue.js?和https://router.vuejs.org/guide/#javascript的URL获取查询参数 我现在有了这个代码: 但是,在Chrome或Firefox中运行它会产生“无法读取未定义的'query'属性” 定义路由并创建到它们的链接并加载它们,正如《VueRouter指南》中所述。看来Vu

  • 我有一个按钮,它包含一个抽屉和文本。我希望按钮的背景不同于正常提供的(最好是一个普通的颜色)。这工作得很好,我只需在XML文件中使用属性并相应地分配颜色。然而,我希望背景改变为不同的颜色时,选择或聚焦(状态选择器)。 我尝试用定义的颜色在一个可绘制的文件夹中创建一个选择器(当处理按钮的文本时很好地工作),如下所示: 并将此xml设置为属性,如下所示: 但这会引起一个力闭合,说明: 但资源就在那里。