我尝试访问组件中的一些引用。但我在控制台中有这个错误。
withRouter.js:44 Warning: Stateless function components cannot be given refs (See ref "pseudo" in FormInputText created by RegisterForm). Attempts to access this ref will fail.
这是我的组件:
class RegisterForm extends React.Component {
render() {
return (
<form action="">
<FormInputText ref="pseudo" type="text" defaultValue="pseudo"/>
<input type="button" onClick={()=>console.log(this.refs);} value="REGISTER"/>
</form>
);
}
}
另外,当我点击按钮时,我在控制台中获得了Object {pseudo: null}
。我期待一个对象null
。
我不确定为什么这不起作用。请注意,我的反应树使用mobx-react
。
答案 0 :(得分:9)
Refs不适用于无状态组件。它在the docs
中进行了解释由于无状态函数没有后备实例,因此您无法将ref附加到无状态函数组件。
写作时的无状态组件实际上有实例(它们被内部包装到类中)但是你无法访问它们,因为React团队将来会进行优化。见https://github.com/facebook/react/issues/4936#issuecomment-179909980
答案 1 :(得分:0)