Topic: MDBSelect with empty list
japan priority asked 10 months ago
MDBselect with empty datalist doesn't work. It's a bad, when I have to load a list dynamically.
<MDBSelect
label='Example label'
data={[]} />
Result: ERROR Cannot read properties of undefined (reading 'value') TypeError: Cannot read properties of undefined (reading 'value') at https://localhost:3000/static/js/bundle.js:377963:28 at https://localhost:3000/static/js/bundle.js:377979:7 at commitHookEffectListMount (https://localhost:3000/static/js/bundle.js:325795:30) at commitPassiveMountOnFiber (https://localhost:3000/static/js/bundle.js:327288:17) at commitPassiveMountEffects_complete (https://localhost:3000/static/js/bundle.js:327260:13) at commitPassiveMountEffects_begin (https://localhost:3000/static/js/bundle.js:327250:11) at commitPassiveMountEffects (https://localhost:3000/static/js/bundle.js:327240:7) at flushPassiveEffectsImpl (https://localhost:3000/static/js/bundle.js:329125:7) at flushPassiveEffects (https://localhost:3000/static/js/bundle.js:329077:18) at performSyncWorkOnRoot (https://localhost:3000/static/js/bundle.js:328294:7)
japan priority answered 8 months ago
I'll try it in version 6.2, it works with empty list, thx.
But I have another problem, when I have for example 3 items a select last one for removing, after action removing, reload list with 2 items ... error is same as before, because I have selected 3rd item, but after reload I have only 2 items.
Mateusz Lazaru staff commented 8 months ago
Absolutely, that's indeed a bug related to the MDBSelect component. I appreciate you bringing this to my attention, and I'll make sure to add it to our to-do list for fixing.
For the time being, I've got a workaround that should help you bypass this issue:
<>
<MDBSelect data={selectData} />
<MDBBtn
onClick={() => {
setSelectData([{ text: 'One', value: 1, defaultSelected }]);
}}
>
Set value
</MDBBtn>
</>
The error you're encountering is caused by the MDBSelect searching for an active option, which becomes non-existent after removal. To address this, the workaround involves resetting the selectData array with a new, existing active option. This effectively resolves the issue and prevents the error.
Mateusz Lazaru staff answered 10 months ago
Hi,
Thanks for reporting this issue, we're going to fix it soon.
For now, you can try to work it around by using a hidden
option as a placeholder until you fetch data from the server.
const [data, setData] = useState([
{
text: 'Placeholder',
hidden: true,
},
]);
FREE CONSULTATION
Hire our experts to build a dedicated project. We'll analyze your business requirements, for free.
Answered
- ForumUser: Priority
- Premium support: Yes
- Technology: MDB React
- MDB Version: MDB5 6.1.0
- Device: PC
- Browser: Chrome
- OS: Win10
- Provided sample code: No
- Provided link: Yes