React 关注问题
Focus issues with react
当 "isFocussed" 为真时,焦点不作用于输入
componentWillReceiveProps(nextProps){
if(nextProps.isFocussed){
this.myRef.current.focus();
}
}
<input ref={this.myRef} />
您没有使用 createRef
并试图使用 focus
方法,这是问题所在。
只需创建 callback ref
就可以了。
下面是工作代码 codesandbox link。
index.js
import React from "react";
import ReactDOM from "react-dom";
import FocusComp from "./FocusComp";
class App extends React.Component {
state = {
focus: false
};
render() {
return (
<div className="App">
<button onClick={() => this.setState({ focus: true })}>
click me to focus
</button>
<br />
<br />
<FocusComp isFocussed={this.state.focus} />
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
FocusComp.js
import React from "react";
class FocusComp extends React.Component {
componentWillReceiveProps(nextProps) {
if (nextProps.isFocussed) {
this.myRef.focus();
}
}
render() {
return <input ref={myRef => (this.myRef = myRef)} />;
}
}
export default FocusComp;
我创建了一个工作代码来让你明白你做错了什么。
需要改进的地方:-
1) 使用 createRef
而不是回调。
2) 不要使用 componentWillReceiveProps
,因为它已被弃用。
希望对您有所帮助!!!
当 "isFocussed" 为真时,焦点不作用于输入
componentWillReceiveProps(nextProps){
if(nextProps.isFocussed){
this.myRef.current.focus();
}
}
<input ref={this.myRef} />
您没有使用 createRef
并试图使用 focus
方法,这是问题所在。
只需创建 callback ref
就可以了。
下面是工作代码 codesandbox link。
index.js
import React from "react";
import ReactDOM from "react-dom";
import FocusComp from "./FocusComp";
class App extends React.Component {
state = {
focus: false
};
render() {
return (
<div className="App">
<button onClick={() => this.setState({ focus: true })}>
click me to focus
</button>
<br />
<br />
<FocusComp isFocussed={this.state.focus} />
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
FocusComp.js
import React from "react";
class FocusComp extends React.Component {
componentWillReceiveProps(nextProps) {
if (nextProps.isFocussed) {
this.myRef.focus();
}
}
render() {
return <input ref={myRef => (this.myRef = myRef)} />;
}
}
export default FocusComp;
我创建了一个工作代码来让你明白你做错了什么。
需要改进的地方:-
1) 使用 createRef
而不是回调。
2) 不要使用 componentWillReceiveProps
,因为它已被弃用。
希望对您有所帮助!!!