如何在 ReactJs 中通过 props 传递 ref?
How to pass ref by props in ReactJs?
这是我的组件逻辑:
component_1
|
'------component_2
我在component_2里有一个输入,我想把.focus()放在上面,但是component_1里有这个功能,我怎么办?
我认为它会做参考,如果我错了请纠正我。
从 React 16.3 开始,您可以使用 React.createRef()
in Component1
and pass it to the input
via Component2
using ref forwarding:
const Component2 = React.forwardRef((props, ref) => (
<input ref={ref} />
));
class Component1 extends React.Component {
ref = React.createRef();
componentDidMount() {
setTimeout(() => this.ref.current.focus(), 1000);
}
render() {
return <Component2 ref={this.ref} />;
}
}
ReactDOM.render(
<Component1 />,
document.getElementById('demo')
);
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div id="demo"></div>
这是我的组件逻辑:
component_1
|
'------component_2
我在component_2里有一个输入,我想把.focus()放在上面,但是component_1里有这个功能,我怎么办? 我认为它会做参考,如果我错了请纠正我。
从 React 16.3 开始,您可以使用 React.createRef()
in Component1
and pass it to the input
via Component2
using ref forwarding:
const Component2 = React.forwardRef((props, ref) => (
<input ref={ref} />
));
class Component1 extends React.Component {
ref = React.createRef();
componentDidMount() {
setTimeout(() => this.ref.current.focus(), 1000);
}
render() {
return <Component2 ref={this.ref} />;
}
}
ReactDOM.render(
<Component1 />,
document.getElementById('demo')
);
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div id="demo"></div>