How can I return only filtered paths from getStaticPaths?
This returns the entire posts
export async function getStaticPaths() {
const { data } = await axios.get(`${url}/category`, config);
const paths = data.map((post) => {
return {
params: { postId: post.id },
};
});
return {
paths,
fallback: false
}
}
This is what I retried
export async function getStaticPaths() {
const { data } = await axios.get(`${url}/category`, config);
const paths = data.filter((post) => {
if (post.isActive) {
return { params: { postId: post.id } }
}
})
return {
paths,
fallback: false
}
}
The error message
> Build error occurred
Error: Additional keys were returned from `getStaticPaths` in page "/product/[packageAlias]". URL Parameters intended for this dynamic route must be nested under the `params` key,
>Solution :
filter method will return the same object formatting after filteration, so you need map after filter, You can use flatMap method to do both at the same time.
const paths = data.flatMap((post) => {
return post.isActive ? [{ params: { postId: post.id } }] : [];
})