Skip to content

How to get the props after Unselect the last item #99

Description

@Brhernann

Hello there,

Am working with this one and when i unselect the last item, the onSelect function is returning me a empty array...
Great! is not item but how to know which one was unselected ?

i tried to send the props with the data that i need from Cell to the component where im calling the selectable, i tried Onclick but am having problem with React because when i open the modal is rendering all the data, i created a condition in the Cell to work only when is unselected but is not working

is rendering all the data anyway:

image

The error:

Bug: too hard to fix "Cannot update a component from inside the function body of a different component.

Here the code, u can follow the OnClick....

//This one is the function that is receiving the data to know which one was the las unselected
const onDeselect = useCallback(room => {
         setRoom(room)
},[])

//Calling the  selectable component that is inside `Cards` that is inside `Tabs`!
                            <Tabs activeKey={activeKey} onChange={tabCallback}>
                                {currentTab && currentTab.distribution.map((q, i) => (
                                    <TabPane className="tabPanelFloor" key={i} tab={`PISO ${q.floor}`}>

                                        {q.rooms.map((room, index) => (
                                            <Card
                                                style={gridStyle}
                                                key={index}
                                                title={`Habitación ${room.number}`}
                                            >
                                                <div> 
//Calling the selectable
                                                    <Selectable floor={q.floor} beds={room.beds} room={room.number} onClick={onDeselect} onSelect={onSelect}/>
                                                </div>
                                            </Card>
                                        ))}
                                    </TabPane>
                                ))}
                            </Tabs>

//The selectable!
const Selectable = ({ onSelect, floor, beds, room, onClick }) => {
           return (
    <SelectableGroup
      scrollContainer="html"
      allowClickWithoutSelected={true}
      selectOnClick={true}


      resetOnStart={false}
      enableDeselect
      onSelectionFinish={onSelect}
    >

      <table key={room} border="1">
        <tbody>
          <List data={{ floor, beds: _.chunk(beds, 6), room }} onClick={onClick} />
        </tbody>
      </table>

    </SelectableGroup>
      );
    };

//The list!
const List = memo(({ data, onClick }) =>
  data.beds.map((q, i) =>
  (
    <tr key={i}>
      {q.map((k, j) => <Cells key={j} room={data.room} onClick={onClick} number={k} />)}
    </tr>
  )
 )
);

//The cell that contain the data and know if is selected or UNSELECTED!
const Cells = ({ selectableRef, isSelected, isSelecting, number, room, onClick}) => {
    return (
        <td
            ref={selectableRef}
            className={`${isSelected ? "selected" : ""} ${isSelecting ? "selecting" : ""}`}
            
        >
            <div style={
                {
                    color: isSelected || isSelecting ? "#eeeded" : "#000",
                    background: isSelected || isSelecting ? "#5c6e91" : "#fff",
                    padding: 2
                }
            }
          onClick={(!isSelected || !isSelecting) && (onClick(room))}
            >  
               
                <div><Icon component={BedSvg}/></div>
                <div>{number}</div>
            
            </div>
        </td>
    );
};

The onClick in Cell will work only if is Unselected, because is the data that i need and because is rendering to much!

is a way to know which one was unselected and how to improve it ?

Thanks guys !

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions