Creé un enlace personalizado que toma una cadena y 3 matrices de User s, llamado useSearchUsers
import { useCallback } from 'react'; export default function useSearchUsers() { const searchUsers = useCallback((searchValue, assistants, interested, rejected) => { const assistantResults = []; const interestedResults = []; const rejectedResults = []; if (searchValue !== '') { if (assistants.length > 0) { assistants.forEach(user => { if (user.assistantName.includes(searchValue)) { const name = user.assistantName; const image = user.assistantImage; const id = user.assistantId; assistantResults.push({ id, name, image }); } }); } if (interested.length > 0) { interested.forEach(user => { if (user.interestedName.includes(searchValue)) { const name = user.interestedName; const image = user.interestedImage; const id = user.interestedId; interestedResults.push({ id, name, image }); } }); } if (rejected.length > 0) { rejected.forEach(user => { if (user.rejectedName.includes(searchValue)) { const name = user.rejectedName; const image = user.rejectedImage; const id = user.rejectedId; rejectedResults.push({ id, name, image }); } }); } } }, []); return searchUsers; }Y en la pantalla donde quiero llamar a ese enlace, tengo un TextInput donde el usuario puede escribir una cadena. Aquí he declarado los arreglos asistentes, interesados y rechazados, pero por razones obvias los estoy omitiendo aquí.
import useSearchUsers from '../../hooks/assistance/useSearchUsers'; const [eventAssistants, setEventAssistants] = useState([]); const [eventInterested, setEventInterested] = useState([]); const [eventRejected, setEventRejected] = useState([]); const [searchText, setSearchText] = useState(''); const searchUsers = useSearchUsers(); export default function Screen(props) { return ( <Container> <SafeAreaProvider> <TextInput onChangeText={text => setSearchText(text)} /> <Button onPress={() => useSearchUsers(searchText, eventAssistants, eventInterested, eventRejected)} /> </SafeAreaProvider> </Container> ); }Mi pregunta es, ¿cómo puedo devolver las 3 matrices de resultados del gancho y pasarlas a la pantalla?
Puede devolver una array que contenga las 3 matrices de resultados.
return [assistantResults, interestedResults, rejectedResults]; en lugar de return searchUsers;
Y para consumirlo en Screen puedes desestructurar el valor de retorno del gancho.
const [assistantResults, interestedResults, rejectedResults] = useSearchUsers();