I created one functional component and declared some variables in it.
const Foo = (props) => {
let instanceVariable = null;
const selectValue = (value) => {
instanceVariable = value;
}
const proccessVariable = () => {
// Use instanceVariable and do some task
}
return(
<SelectionOption onChange={selectValue} />
);
}
I observed that whenever parent component of Foo
is re-rendered or sometime Foo
itself re-renders instanceVariable
set back to null
. Instead of this I want to save selectedValue
init and proccess it later on proccessVariable()
method.
If I set instanceVariable
as state
it will work and there is no need of state to just hold the selected value.
I know useEffect(()=>{}, [])
only run one time but how can I declare instanceVariable
there and use it in other functions.
Can you please let me know what I'm doing wrong.
Since you declare a variable directly in your functional component, its value is reset everytime your component re-renders. You can make use of useRef
to declare instance variables in functional component
const Foo = (props) => {
let instanceVariable = useRef(null);
const selectValue = (value) => {
instanceVariable.current = value; // make sure to use instanceVariable.current
}
const proccessVariable = () => {
// Use instanceVariable.current and do some task
}
return(
<SelectionOption onChange={selectValue} />
);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With