« 回到主页

React DOM操作

1 ref的字符串属性

var MyComponent = React.createClass({
    handleClick: function() {
        this.refs.myInput.focus();
    },
    render: function() {
return (
    <div>
        <input type="text" ref="myInput" />
        <input type="button" value="焦点获取" onClick={this.handleClick} />
    </div>
        );
    }
});
ReactDOM.render(
    <MyComponent />,
    document.getElementById('example')
);

2 ref的回调属性

var MyComponent = React.createClass({
    handleClick: function() {
        input.focus();
    },
    render: function() {
        return (
            <div>
        <input ref={ node => { input = node; } } />
        <input type="button" value="焦点获取" onClick={this.handleClick} />
    </div>
        );
    }
});
ReactDOM.render(
    <MyComponent />,
    document.getElementById('example')
);
function MyInput() {
    return <input />;
}
var MyComponent = React.createClass({
    handleClick: function() {
        input.focus(); // 报错:Cannot read property 'focus' of null
    },
    render: function() {
        return (
            <div>
        <MyInput ref={ node => { input = node; } } />
        <input type="button" value="焦点获取" onClick={this.handleClick} />
    </div>
        );
    }
});
ReactDOM.render(
    <MyComponent />,
    document.getElementById('example')
);
class MyInput extends React.Component {
    render() {
        return <input />;
    }
}
var MyComponent = React.createClass({
    handleClick: function() {
        input.focus(); // 报错:input.focus is not a function
    },
    render: function() {
        return (
            <div>
        <MyInput ref={ node => { input = node; } } />
        <input type="button" value="焦点获取" onClick={this.handleClick} />
    </div>
        );
    }
});
ReactDOM.render(
    <MyComponent />,
    document.getElementById('example')
);
class MyInput extends React.Component {
    render() {
        return <input />;
    }
}
var MyComponent = React.createClass({
    handleClick: function() {
        ReactDOM.findDOMNode(input).focus();
    },
    render: function() {
        return (
            <div>
        <MyInput ref={ node => { input = node; } } />
        <input type="button" value="焦点获取" onClick={this.handleClick} />
    </div>
        );
    }
});
ReactDOM.render(
    <MyComponent />,
    document.getElementById('example')
);

3 ref用于原生HTML和Component

3.1 ref用于原生HTML

<input type="text" ref="myInput”/>
// 以下四种方法都可以获取到真实的DOM
var inputDOM = this.refs.myInput.getDOMNode();
var inputDOM = React.findDOMNode(this.refs.myInput);
var inputDOM = this.refs['myInput'].getDOMNode();
var inputDOM = React.findDOMNode(this.refs['myInput']);

3.2 ref用于原生Component

4 总结

« 回到主页