export const asyncAction = (data: {
  param: string
}): AppThunk => async (dispatch) => {
  try {
    const apidata = await api({ param });
  } catch (err) {
    console.log(err);
  }
};

Recibo este error "No existe ningún valor en el alcance de la propiedad abreviada 'param'. Declare uno o proporcione un inicializador".

0
Rasoul Salehi 25 ago. 2020 a las 17:20

3 respuestas

La mejor respuesta

Si desea desestructurar la propiedad param, deberá colocar la sintaxis del objeto desestructurado a la izquierda de la definición del tipo de parámetro, así:

export const asyncAction = ({
  param,
}: {
  param: string;
}): AppThunk => async (dispatch) => {
  // ...

Pero en este caso, si el parámetro es de hecho un objeto con solo una propiedad param, la desestructuración no ayuda, porque luego está creando un objeto con una propiedad param para pasar a {{ X2}}:

export const asyncAction = (data: { param: string; }): AppThunk => async (dispatch) => {
  try {
    const apidata = await api(data);
  } catch (err) {
    console.log(err);
  }
  // ...
};
0
CertainPerformance 25 ago. 2020 a las 14:26

Su método outerscope tiene un parámetro llamado datos con propiedad param. En su método de alcance interno, está intentando acceder a param sin data.param

Si debería ser:

export const asyncAction = (data: {
    param: string
}): AppThunk => async (dispatch) => {
    try {
        const apidata = await api({ param: data.param });
    } catch (err) {
        console.log(err);
    }
};
0
Sherif Elmetainy 25 ago. 2020 a las 14:28

En api({ param }); estás intentando acceder a param que está almacenado en data. Primero debes "descomprimirlo" de data, así: const param = data.param;, solo entonces podrás usarlo.

export const asyncAction = (data: {
  param: string
}): AppThunk => async (dispatch) => {
  const param = data.param;
  try {
    const apidata = await api({ param });
  } catch (err) {
    console.log(err);
  }
};
0
Gieted 25 ago. 2020 a las 14:29