I have a search box that I can copy and paste a column from excel. I parse the input and generate an array of the entries.
I am then mapping over the entries and calling a custom hook with each item to fetch some data from my graphql
endpoint.
For example:
3 entries are provided from the search box:
["D38999/26", "LJT06RE25-61PA", "D38999/46FJ61AA"]
The fetchData
function receives one of these items at a time as the query parameter. Currently, this process would return 3 separate objects as such:
{query: "D38999/26", cables: Array(35)}
{query: "LJT06RE25-61PA", cables: Array(1)}
{query: "D38999/46FJ61AA", cables: Array(1)}
How do I set up a react hook to allow me to append each object into the result
State as an array of objects?
My end goal would be an array of objects like this:
[
{query: "D38999/26", cables: Array(35)},
{query: "LJT06RE25-61PA", cables: Array(1)},
{query: "D38999/46FJ61AA", cables: Array(1)}
]
This is my current custom hook to resolve my API endpoint
const useCableMatch = () => {
const [result, setResult] = useState([]);
const [isLoading, setIsLoading] = useState(false);
const [isError, setIsError] = useState(false);
const client = useApolloClient();
const fetchData = async query => {
setIsError(false);
setIsLoading(true);
try {
const { data } = await client.query({
query: GET_VALID_CABLE,
variables: { pn: `%${query}%` },
});
const response = { query, ...data };
console.log('response:', response);
setResult(response);
} catch (error) {
setIsError(true);
}
setIsLoading(false);
};
return [{ result, isLoading, isError }, fetchData];
};
Currently setResult
is set up to only return a single object from response. I would like to return an array with each object generated appended to the existing array of objects.
Assuming that response
can be added directly to result
array, you can:
setResult(result => [...result, response]);
This will append the new response
from the previous result
state and by using array spread operator
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With