Así que tengo el siguiente componente de filtro
<SelectSearchFilter name="search" labelKey="option" width="small" valueKey="value" options={[ { option: "Publication Name", value: "name", exact: true }, { option: "Publication ID", value: "id", exact: true }, { option: "Publisher ID", value: "publisher", exact: true }, { option: "ISSN", value: "issn", exact: true }, { option: "Legacy FH Pub Code", value: "id", exact: true, customValue: getLegafyFhPubCode(null) } ]} />Funciona, pero a veces necesito hacer un procesamiento previo de los valores en la parte posterior y no obtener el valor directamente del campo de entrada. Así que he creado una opción llamada customValue, para pasar funciones como valores.
El primer problema es que, idealmente, quiero llamar a customValue como una referencia a la función, no quiero que se ejecute todavía, me veo obligado a poner nulo como argumento, pero realmente no quiero ejecutarlo todavía.
Esto me lleva al componente selecsearfilter
Específicamente a esta entrada
onKeyDown={async event => { if (event.key === "Enter") { console.log("----------------ENTER-----------------") const values = await getOptionValue(selectValue, valueKey) console.log(selectValue) //[option: 'Publication name', value: 'name', exact: true] | [option: 'Legacy FH Pub Code', value: 'id', exact: true, customValue: Promise] let customValue = await selectValue.customValue(inputValue) console.log(customValue) updateFilter(name, { property: getOptionValue(selectValue, valueKey), text: customValue ? customValue : inputValue }); } }}Y en el código anterior, preste atención al comentario. Por lo general, cuando no hay un valor personalizado, simplemente configuro el valor de entrada en el texto al actualizar el filtro y termino.
El problema ocurre ahora que, si customValue prop está disponible (que es el caso), quiero establecer la respuesta de esa promesa como inputValue en su lugar. Pero viene como Promesa, y obtengo
Uncaught (in promise) TypeError: selectValue.customValue is not a function at onKeyDown (SelectSearchFilter.tsx:108:1)¿Cómo puedo resolver esa promesa? ¿Y cómo puedo pasar esa función al componente sin tener que especificar ningún argumento como nulo?
el error ocurre porque su CustomValue no es una función como dice, pero el resultado de la función getLegafyFhPubCode(null) debe pasar la función sin llamarla getLegafyFhPubCode o puede usar una función de flecha () => getLegafyFhPubCode(null)