Topic: How to dynamically add items to Sortable plugin (<MDBSortable />)
Hello!
I'm using the component in my project. I'd like to add things to the list of sortable items, but can't seem to get it working. Here's a simplified version of my code:
import React, { useState } from "react";
import { MDBBtn } from "mdbreact";
import MDBSortable from "mdb-react-sortable";
const DynamicSortable = () => {
const [sortableItems, setSortableItems] = useState([
"This is the first item",
"This is the second item",
"This is the third item"
]);
const [sortableComponent, setSortableComponent] = useState(
<MDBSortable items={sortableItems} axis="y" />
);
const addNewItem = itemText => {
let newSortableItems = [].concat(sortableItems);
newSortableItems.push(itemText);
const newSortableComponent = (
<MDBSortable items={newSortableItems} axis="y" />
);
console.log("Adding new item " + itemText);
console.log(newSortableItems);
console.log(newSortableComponent.props.items);
setSortableItems(newSortableItems);
setSortableComponent(newSortableComponent);
};
return (
<>
{sortableComponent}
<MDBBtn onClick={e => addNewItem("This is a new item")}>
Add new item
</MDBBtn>
</>
);
};
export default DynamicSortable;
In short, this does the following:
- Creates an array in the state called
sortableItems
- Creates an
<MDBSortable />
component in the state calledsortableComponent
, and gives thesortableItems
array as theitems
prop - Displays the
sortableComponent
component on the page - Displays an
<MDBBtn />
which, when clicked, adds something to thesortableItems
array, and updates thesortableComponent
component in the state
The sortableComponent
component displays exactly as expected when the page loads. The button adds a new item to the sortableItems
array, as expected. The sortableComponent
updates in the state, as expected. However the actual sortableComponent
that's displayed on the page doesn't update.
I have included a few console.log()
s in my code to show that the various state changes are being made as expected.
Can anybody see anything I might be doing wrong? Is what I'm trying to do here even possible?
Many thanks,
Jim
Jakub Chmura staff premium answered 5 years ago
Hi @jimgroome,
Thank you for your feedback.
I can't answer this question right now because I need some time to check what's going on. I set a high priority for this task and I will try to find a solution to this situation as soon as possible.
Best Regards,
Kuba
jimgroome commented 5 years ago
Hi @Jakub Chmura, thanks so much. If you need any more information then please let me know.
Jakub Chmura staff premium commented 5 years ago
Ok. When I will need more information, I'll let you know.
Jakub Chmura staff premium answered 5 years ago
Hi @jimgroome,
It seems to me that this is a problem with our component and state updating inside of it. I added the task to our bug list with high priority and we will try to solve this problem as soon as possible.
Best, Kuba
jimgroome commented 5 years ago
So I wasn't going mad! That's great. Thanks for your support, and best of luck!
Jakub Chmura staff premium commented 5 years ago
We already fix this issue and we are in a test phase. When everything will be alright we publish a solution in the next release.
Best, Kuba
jimgroome commented 5 years ago
That's fantastic news, and thank you for the update! Will look forward to using the plugin in my project. Jim
Jakub Chmura staff premium commented 5 years ago
You're welcome!
jimgroome commented 5 years ago
Hi @Jakub Chmura, is there an ETA for the new version of the Sortable plugin? I'd like to get started on the next phase of this project and if I was able to use Sortable it would make things a lot simpler!
Thanks again for the continued support.
Jakub Chmura staff premium commented 5 years ago
We already fix this bug, and if tests go well we will publish a solution in the next release on Monday.
Best, Kuba
FREE CONSULTATION
Hire our experts to build a dedicated project. We'll analyze your business requirements, for free.
Answered
- User: Free
- Premium support: No
- Technology: MDB React
- MDB Version: 4.25.2
- Device: PC
- Browser: Chrome
- OS: Windows 10
- Provided sample code: No
- Provided link: No