【发布时间】:2020-10-07 15:29:13
【问题描述】:
我有这个父类组件
class TransferHolder extends Component {
constructor(props) {
super(props);
this.transfer = React.createRef();
}
render() {
return (
<div>
<h1>HELLO !</h1>
<Transfer ref={this.transfer}/>
<Button onClick={() => {
const TransferRef = this.transfer.current;
console.log('Selected: ',
TransferRef.state.projectForm.users.right)
}}>
Print
</Button>
</div>
)
}
}
const mapStateToProps = state => {
return {
};
};
const mapDispatchToProps = dispatch => {
return {
};
};
export default connect(mapStateToProps, mapDispatchToProps)(TransferHolder);
当我访问该页面时,会自动显示一条错误消息:
index.js:1 Warning: Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?
Check the render method of `TransferHolder`.
in ConnectFunction (at TransferHolder.js:19)
in div (at TransferHolder.js:17)
in TransferHolder (created by ConnectFunction)
in ConnectFunction (created by Context.Consumer)
in Content (at ContentRoute.js:23)
我只想访问<Transfer> 组件的状态,它是一个基于类的组件。但是它也包含在 redux connect() 中,所以我不知道这是否会将其转换为功能性的。
【问题讨论】:
-
如何将你的组件
Transfer包装成一个返回Transfer的函数组件,并使用额外的道具将该 ref 作为属性传递给Transfer? -
并尝试通过 ref 获取状态似乎是不可能的?
ref代表 DOM 对象 -
我是新来的反应你能告诉我代码吗,因为我不明白。