Próbuję obsłużyć moją funkcję zaznacz wszystko, ale w tej chwili mam pewne problemy. Próbuję wypełnić obiekt wszystkimi polami wyboru. Czy ktoś może mi pomóc?

Oto moja funkcja do obsługi pojedynczego pola wyboru:

constructor(props) {
    super(props);
    this.state = { docList:{} }

 handleCheckboxClick = (e) => {
    let parsedVal = JSON.parse(e.target.value);
    let newDocList = { ...this.state.docList };
    if (e.target.checked) {
        newDocList[parsedVal.documentId] = parsedVal.documentNumber;
    } else {
        delete newDocList[parsedVal.documentId];
    }
    this.setState({
        docList: newDocList,
    }, () => {
        console.log(this.state.docList)
    });
};

Render:

 <MaterialTable options={{

               showSelectAllCheckbox:false,
               selection: true,
               selectionProps: rowData => ({
               onClick: (event , rowData) => this.handleCheckboxClick(event,rowData),
               value: JSON.stringify({ documentId: rowData.documentId, documentNumber: rowData.documentNumber })
                            }),

A to jest uchwyt wybierz wszystko:

 handleAllCheckboxes = (e) => {
   if(e.target.value){
       this.setState(state=> ({selected: state.data.map(rowData=> rowData.documentId) 
       }))
       console.log(this.state.selected)
       return;
   }
   this.setState({ selected: [] });
}

I renderowanie:

<Checkbox
    onClick={this.handleAllCheckboxes}
    indeterminate
    /> Select All
0
PandaMastr 20 listopad 2019, 18:46
1
Więc użyłbym do tego refs. Tak więc każde wejście miałoby atrybut ref (coś w rodzaju atrybutu name), a następnie zapętlił je. pola var = this.refs; Spowoduje to pobranie wszystkich elementów wejściowych z ref, a następnie będziesz musiał uzyskać z tego wszystkie pola wyboru. reactjs.org/docs/refs-i-dom.html
 – 
Steve
20 listopad 2019, 19:35
Myślałem też o tym . Właściwie, jeśli zrobię console.log(this.state.uniqueIDS) wewnątrz handleAllCheckboxes, otrzymam tablicę wszystkich dokumentów z mojej poprzedniej odpowiedzi od BE
 – 
PandaMastr
20 listopad 2019, 19:42

1 odpowiedź

Zawiera przykład zaznaczenia wszystkich lub odznaczenia wszystkich. Ewentualnie klikaj pojedynczo :) https://codesandbox.io/s/select-deselect-checkboxes-jugl2

-2
Darbley 20 listopad 2019, 21:08
Zapraszam do komentowania, dlaczego jest to kiepski przykład. Próbowałem tylko pomóc.
 – 
Darbley
20 listopad 2019, 23:47
Nie próbowałem tego . I nie głosowałem na to negatywnie.
 – 
PandaMastr
21 listopad 2019, 11:11
Bez smutków. Wszelkie opinie są mile widziane. Dziękuję Ci. Mam nadzieję, że Twoje pola wyboru działają!
 – 
Darbley
21 listopad 2019, 22:23
Nie w tej chwili, ale wciąż próbuję.
 – 
PandaMastr
21 listopad 2019, 22:26
Mój przykład może nie być twoim dokładnym rozwiązaniem. Chociaż może to pomóc Twojemu projektowi, patrząc na to, jak działa zaznaczanie wszystkiego / odznaczanie wszystkich.. Tylko myśl. Tak czy inaczej, wszystko dobrze.
 – 
Darbley
21 listopad 2019, 22:38