es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Actualizar los datos de la tabla en switch en mui-datatables mientras mis datos estén en formato booleano.

Quiero actualizar mis datos booleanos mientras se muestran en un interruptor en cada fila (datos obtenidos de Firestore).

Los datos se muestran correctamente, pero al hacer clic en él para cambiarlo a verdadero o falso, no funciona.
Aquí está mi código…

{
  name: "is_verified",
  label: "Verificado",
  options: {
    customBodyRender: (value, tableMeta, updateValue) => {
      return (
                    <Switch
                      checked={value}
                      onChange={
                        async (e) => {
                          e.preventDefault();
                         // tableMeta.rowData[0] es mi ID de documento
                         const docsRef = doc(db, "vendors", tableMeta.rowData[0])
                         await updateDoc(docsRef, {
                            value: e.target.checked,

                          })

                        }
                      }
                      name="active"
                      color="primary"
                    />
      )
  }
  }
 }
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para actualizar tus datos booleanos mientras se muestran en un interruptor para cada fila de datos recuperados de Firestore, debes realizar los siguientes cambios en tu código:

    • Actualiza la función onChange del componente Switch para capturar el nuevo valor del interruptor cuando se active/desactive.
    • Utiliza la función updateValue proporcionada por customBodyRender para actualizar el valor del interruptor en la tabla.
    • Utiliza la función updateDoc de la biblioteca firebase/firestore para actualizar el valor del interruptor en la base de datos de Firestore.

    Aquí está el código actualizado:

    {
      name: "is_verified",
      label: "Verificado",
      options: {
        customBodyRender: (value, tableMeta, updateValue) => {
          return (
            <switch checked="{value}" onchange="{async" (e)=""> {
                const newValue = e.target.checked;
                updateValue(newValue);
                const docRef = doc(db, "vendors", tableMeta.rowData[0]);
                await updateDoc(docRef, { is_verified: newValue });
              }}
              name="active"
              color="primary"
            />
          );
        },
      },
    }
    

    En este código actualizado, estás capturando el nuevo valor del interruptor en la variable newValue y lo utilizas para actualizar el valor del interruptor en la tabla usando la función updateValue. Luego, estás actualizando el valor del interruptor en la base de datos de Firestore utilizando la función updateDoc.

Comments are closed.