Mi objetivo es crear una función en un componente principal y pasarla al componente secundario, de modo que pueda actualizar el estado del componente secundario al principal.
Sin embargo, me gustaría determinar un argumento en el componente principal ya.
¿Hay alguna forma de hacerlo? Vea mi ejemplo a continuación.
Supongamos que tengo el siguiente código
const Parent = ( props ) => { const [counter, setCounter] = useState(0); function updateFunc(type, id) { let obj = {type : "", id : id} if (type == "red"){ obj.type = 'RED_FLAG'; } else { obj.type = 'ELSE_FLAG'; } return obj; } return ( <> // HERE I WOULD LIKE TO PASS ALSO A "RED" ARGUMENT -> IS THIS POSSIBLE? <Child update = {update} </> ) }Puedes hacer eso haciendo una función adicional:
<Child update={(id) => { return updateFunc("red", id); }}/>Hay una técnica llamada curry . Por ejemplo, podría tener una función que tome el tipo como argumento y devuelva una función que tome la identificación como argumento, que finalmente devuelva el objeto.
const Parent = (props) => { const [counter, setCounter] = useState(0); function updateFunc(type) { return (id) => { let obj = { type: "", id: id } if (type == "red") { obj.type = 'RED_FLAG'; } else { obj.type = 'ELSE_FLAG'; } return obj; } } return ( <> <Child update={update("red")} </> ) }