无法读取属性'refs'的null反应错误反应js

fan*_*dro 14 reactjs

我正在使用React js 0.14.3,我正在尝试使用react创建一个Side Menu组件但我不知道为什么我有一个"无法读取属性'refs'为null"当我使用refs之类的反应文件:https: //facebook.github.io/react/docs/more-about-refs.html 你能帮我吗?

'use strict';

    import React from 'react';
    import BaseComponent from './../../BaseComponent.react';
    import Menu from './SidePanelMenu';
    import MenuItem from './SidePanelMenuItem';

    class SidePanel extends BaseComponent {
        showLeft() {
            this.refs.leftmenu.show();
        }


        render() {
            return(
                <div>
                    <button onClick={this.showLeft}>Show Left Menu!</button>

                    <Menu ref="leftmenu" alignment="left">
                        <MenuItem hash="first-page">First Page</MenuItem>
                        <MenuItem hash="second-page">Second Page</MenuItem>
                        <MenuItem hash="third-page">Third Page</MenuItem>
                    </Menu>
                </div>
            );
        }
    }

    export default SidePanel;
Run Code Online (Sandbox Code Playgroud)

小智 43

你需要绑定上下文this.

绑定onClick处理程序的行:

onClick={this.showLeft}
Run Code Online (Sandbox Code Playgroud)

需要是:

onClick={this.showLeft.bind(this)}
Run Code Online (Sandbox Code Playgroud)

否则当你打电话showLeft时无法访问this.


小智 7

改变这个:

<button onClick={this.showLeft}>Show Left Menu!</button>
Run Code Online (Sandbox Code Playgroud)

对此:

<button onClick={::this.showLeft}>Show Left Menu!</button>`
Run Code Online (Sandbox Code Playgroud)