Я пытаюсь передать состояние ребенка в родительский. После перемещения состояния и метода Child в родительский я получил следующее:
export default class Parent extends React.Component {
constructor() {
super();
this.state = { mpc_steps: { price: 0, credits: 0, text: "MPC Credits" } }
}
setMPCSteps = () => {
let step = this.refs.mpc_slider.instance.getVal(); // Will fail
this.setState({
mpc_steps: {
price: step * 200,
credits: step,
text: "MPC Credits"
}
});
};
render() {
return(
<div>
<Child getCredits = {this.setMPCSteps} getParentState = {this.state.mpc_steps}/>
)
}
}
Дочерний компонент:
export default class Child extends React.Component {
render() {
return (
<Fragment>
<mobiscroll.Slider
ref = "mpc_slider"
value = {this.props.getParentState}
onChange = {this.props.getCredits}
>
Buy Credits @ $2/Credit
</mobiscroll.Slider>
</Fragment>
)
}
}
Мне нужно как-то вызвать значение ссылки ребенка от родителя. Проблема в том, что ссылка mobiscroll не определяется родительским элементом. Есть простой способ сделать это? Любые подсказки приветствуются.





Вы можете использовать React.forwardRefapi:
Дочерний компонент:
class Child extends React.Component {
render() {
return (
<Fragment>
<mobiscroll.Slider
ref = {this.props.innerRef}
value = {this.props.getParentState}
onChange = {this.props.getCredits}
>
Buy Credits @ $2/Credit
</mobiscroll.Slider>
</Fragment>
)
}
}
export default React.forwardRef((props, ref) => <Child innerRef = {ref} {...props}/>);И используйте это так:
<Child ref = "mpc_slider" />
Блестяще. Спасибо!