I am stuck in my simple infernojs v1.2.2 app to pass data to parent component, this issue might be linked to the typescript because i got some error for typescript which are not (It has issuewith recognizing props from parent component).
I try to give a callback to my child component to call it later but I have a bad context. The work around I did make me not even triggering the onInput.
Here is my parent component
import { linkEvent } from 'inferno';
import Component from 'inferno-component';
import Weight from './weight';
export class RatioAlcohol extends Component<Props, any> {
constructor(props, context) {
super(props, context);
this.state = { weight: 65 };
}
setChangeWeight(instance, event) {
instance.setState({ weight: event.target.value });
}
render(props){
return (
<div className="ratio-alcohol">
<Weight valueChanged={ linkEvent(this, this.setChangeWeight) } weight={ this.state.weight } />
</div>
);
}
}
and there my child component:
import { linkEvent } from 'inferno';
import Component from 'inferno-component';
export default class Weight extends Component<Props, any> {
constructor(props, context) {
super(props, context);
this.state = { weight: props.weight};
}
handleChangeWeight(instance, event) {
instance.valueChanged.event();
}
render(props){
return (
<div className="weight">
<label for="WeightInput">What is your weight(Kg)?</label>
<input id="WeightInput" name="weight" type="number" value={ props.weight } onInput={ linkEvent(props, this.handleChangeWeight) } />
</div>
);
}
}
I did not find an example of parent / child component interaction in the inferno documentation and I have no experience in React, I feel like I could get the answer from React app but did not get it for the moment.
I used the inferno-typescript-example as base for my project, I don't know if it matters with that issue.
so the
handleChangeWeightfunction signature inWeighthas 1st params as instance, it's actually your component'sprops. It should be something likeand in RatioAlcohol you don't have to link event, rather if you need access to instance, you gotta bind your handler