Closed mfzha closed 3 weeks ago
Your values and onChange does not look right.
Can you reproduce in code sandbox?
On Sat, 24 Aug 2024 at 11:03 AM Michael Zhao @.***> wrote:
const [something, setSomething] = useState({ name: [], score: "" });
const reset = () => { setSomething({ name: [], score: "" };
return( <> <button onClick={() => reset()}> Reset
</> );
Then calling reset() will reset something but the selected value will not revert to the default Select... placeholder.
This is after following https://github.com/sanusart/react-dropdown-select/blob/master/docs/src/examples/ExternalClear.js but making it functional.
— Reply to this email directly, view it on GitHub https://github.com/sanusart/react-dropdown-select/issues/318, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACBLRWAFYDEUYV5LK3RWULZTA453AVCNFSM6AAAAABNBMDG3CVHI2DSMVQWIX3LMV43ASLTON2WKOZSGQ4DIMZUGIZDGMQ . You are receiving this because you are subscribed to this thread.Message ID: @.***>
It's giving 404 Devbox not found, could you check permissions please?
The issue there becomes that the updated value of player.name
is actually a copy of the entire player object of A
, that is,
player.name = [{"id":"1","name":"A"}]
as can be verified by the line App.jsx:52
{JSON.stringify(player.name)}
whereas the intention is for the name to only be the name property of the player.
This is the components API. You can filter whatever you need afterwards. On Sun, 25 Aug 2024 at 12:28 PM Michael Zhao @.***> wrote:
The issue there becomes that the updated value of player.name is actually a copy of the entire player object of A, that is,
player.name = [{"id":"1","name":"A"}]
as can be verified by the line App.jsx:52
{JSON.stringify(player.name)}
whereas the intention is for the name to only be the name property of the player.
— Reply to this email directly, view it on GitHub https://github.com/sanusart/react-dropdown-select/issues/318#issuecomment-2308749960, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACBLRQOSBIPFXNXAXEXCDLZTGPUHAVCNFSM6AAAAABNBMDG3CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMBYG42DSOJWGA . You are receiving this because you were mentioned.Message ID: @.***>
The filtering has to be done after state is set though right? And the Select
reflecting the state's player.name
attribute should then be updated once the state has been set.
As it is now, the player
state's name
has to be the entire person
object, to be filtered later -- there is no method to have it be just the person.name
.
Please correct me if I'm saying something silly here by the way, I'm new to all of this so I might be thinking about it all the wrong way.
Hey. No. Nothing silly here. Some similar components are working in the way you describing. Native html select for example, works with flat string arrays for example. It is just this component designed in a way that it accepts array of object and keeps selected values as array of objects. Just for the sake of flexibility of working with data inside the components. For example to build custom content from data inside the selected object.
On Sun, 25 Aug 2024 at 1:45 PM Michael Zhao @.***> wrote:
The filtering has to be done after state is set though right? And the Select reflecting the state's player.name attribute should then be updated once the state has been set.
As it is now, the player state's name has to be the entire person object, to be filtered later -- there is no method to have it be just the person.name.
Please correct me if I'm saying something silly here by the way, I'm new to all of this so I might be thinking about it all the wrong way.
— Reply to this email directly, view it on GitHub https://github.com/sanusart/react-dropdown-select/issues/318#issuecomment-2308775476, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACBLRTXNXVY5ZSPVJE3VULZTGYS3AVCNFSM6AAAAABNBMDG3CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMBYG43TKNBXGY . You are receiving this because you were mentioned.Message ID: @.***>
keeps selected values as array of objects.
I think that's the key here which I was missing. So if for instance I wanted the select to only be on names, I would either need to do as we discussed before (update state as the object and post-process it to only filter out the attribute I wanted), or pre-process options
as an array of just names.
Is this something that would be immediately obvious to experienced devs? As it wasn't super obvious to me, I wonder if it might be helpful including this in the documentation?
In any case, thanks for the help! Feel free to close this issue out :)
Not everyone the same no matter of experience IMHO. I guess devs usually stop assuming and do debug at some point of life. I might add to the docs. It is just bloated docs are also not always the best option.
On Mon, 26 Aug 2024 at 5:12 AM Michael Zhao @.***> wrote:
keeps selected values as array of objects.
I think that's the key here which I was missing. So if for instance I wanted the select to only be on names, I would either need to do as we discussed before (update state as the object and post-process it to only filter out the attribute I wanted), or pre-process options as an array of just names.
Is this something that would be immediately obvious to experienced devs? As it wasn't super obvious to me, I wonder if it might be helpful including this in the documentation?
In any case, thanks for the help! Feel free to close this issue out :)
— Reply to this email directly, view it on GitHub https://github.com/sanusart/react-dropdown-select/issues/318#issuecomment-2309165645, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACBLRU6VAV4IW7Z5FDUGZTZTKFHHAVCNFSM6AAAAABNBMDG3CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMBZGE3DKNRUGU . You are receiving this because you were mentioned.Message ID: @.***>
Then calling
reset()
will resetsomething
but the selected value will not revert to the defaultSelect...
placeholder.This is after following https://github.com/sanusart/react-dropdown-select/blob/master/docs/src/examples/ExternalClear.js but making it functional.