Reactjs,onclick函数是自动触发的

标签 reactjs

我正在学习 Reactjs。假设我有一个按钮,我在这个按钮上触发一个事件。但不知怎的,这个事件总是调用事件我不点击任何东西。下面是我的代码,你能帮我吗?假设我使用 Ajax 调用 api,当有数据时我更新 UI。在用户界面中,我有一个按钮,它还会触发一个事件。

"use strict";

var Movie = React.createClass({
    displayName: "Movie",

    getInitialState: function getInitialState() {
        return {
            movie_sessions: this.props.movie_session,
            movie: this.props.movie,
            rooms: this.props.rooms
        };
    },

    render: function render() {
        return React.createElement(
            "div",
            { style: column },
            React.createElement(
                "a",
                null,
                this.state.movie.name
            ),
            React.createElement(
                "div",
                { style: slide },
                React.createElement(
                    "ul",
                    null,
                    this.state.movie_sessions.map(function (movie_session) {
                        return React.createElement(MovieSession, {
                            key: movie_session.id,
                            room_id: movie_session.room_id,
                            date_time: movie_session.date_time
                        });
                    })
                )
            ),
            React.createElement(
                "div",
                { style: main },
                React.createElement(Seats, null)
            )
        );
    }
});

var MovieSession = React.createClass({
    displayName: "MovieSession",

    loadRoomFromServer: function loadRoomFromServer() {
        $.ajax({
            url: "/rooms/" + this.state.room_id + ".json",
            dataType: 'json',
            success: function (data) {
                this.setState({ room: data });
            }.bind(this),
            error: function (xhr, status, err) {
                console.error(this.props.url, status, err.toString());
            }.bind(this)
        });
    },
    loadSeatFromServer: function loadSeatFromServer() {
        console.log("click");
        $.ajax({
            url: "/seats.json",
            dataType: 'json',
            success: function (data) {
                //I want to update state for Seat
            }.bind(this),
            error: function (xhr, status, err) {
                console.error(this.props.url, status, err.toString());
            }
        });
    },
    getInitialState: function getInitialState() {
        return {
            key: this.props.key,
            room_id: this.props.room_id,
            date_time: this.props.date_time
        };
    },
    componentDidMount: function componentDidMount() {
        this.loadRoomFromServer();
        setInterval(this.loadRoomFromServer, 2000);
    },

    render: function render() {
        if (this.state.room) {
            return React.createElement(
                "div",
                null,
                React.createElement(
                    "li",
                    null,
                    this.state.room.name,
                    " "
                ),
                React.createElement(
                    "p",
                    null,
                    "  ",
                    this.state.date_time
                ),
                React.createElement(
                    "button",
                    {onclick: this.loadSeatFromServer()},
                    "Choose"
                )
            );
        } else {
            return React.createElement(
                "h3",
                null,
                "loading"
            );
        }
    }
});

最佳答案

您应该在 onClick 事件中分配该方法的引用,而不是调用该方法

 React.createElement(
                "button",
                {onclick: this.loadSeatFromServer},  
                "Choose"
            )

关于Reactjs,onclick函数是自动触发的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36322156/

相关文章:

android - OneSignal 表示消息已发送但没有推送通知发送到设备

javascript - React Native 可以在 sleep 模式下工作吗?

javascript - 为什么我的输入字段需要显示错误作为初始状态?

javascript - 在 react-native export 上使用大括号时

css - 如何使用 react-native 根据不同语言动态更改字体系列

javascript - 将 JSX 从组件方法返回到渲染方法

javascript - 在 React Typescript 中,如何定义原生 html 元素的 ...rest 参数的类型?

javascript - 将下拉菜单的背景扩展到浏览器的全宽

javascript - React.js - React Router 内容没有改变

reactjs - React.JS - 作为 React 组件管理 contenteditable div 的内容