Destructuring nested objects: How to get parent and its children values?
The first destructuring creates only Start
and End
variables. If you want to create current
as a variable, then you need to declare it again.
function ({ current: { selectionStart: Start, selectionEnd: End }, current }, AppStateSetter) {
// do something with current , Start , and End
}
You can test it on the Babel compiler:
This code:
const object = {
current: {
selectionStart: "prop 1",
selectionEnd: "prop2"
}
}
const { current: { selectionStart: Start, selectionEnd: End } } = object;
Gets trasnpiled to:
var object = {
current: {
selectionStart: "prop 1",
selectionEnd: "prop2"
}
};
var _object$current = object.current,
Start = _object$current.selectionStart,
End = _object$current.selectionEnd;
As you can see, current
variable is not created.
I think the issue you are facing happens when current is undefined
.
You can try destructing with default value.
function ({ current: { selectionStart: Start, selectionEnd: End } = {} }, AppStateSetter) {
// do something with Start and End
}
If you think you need to access current
as well, try destructuring inside the function.
function ({ current = {}}, AppStateSetter) {
const { selectionStart: Start, selectionEnd: End } = current
// do something with current, Start and End
}