Can someone please explain to me what would be a better approach? I haven't really seen much written about this online, although I feel like there are more rerenders with Approach A than Approach B.
// Approach A
// ComponentA.jsx
export default () => {
. . .
const [user, token] = useSelector(({ auth: { user, token } }) => [user, token])
return (
. . .
)
}
// ComponentB.jsx
export default () => {
. . .
const [user, token] = useSelector(({ auth: { user, token } }) => [user, token])
return (
. . .
)
}
// ComponentC.jsx
export default () => {
. . .
const [user, token] = useSelector(({ auth: { user, token } }) => [user, token])
return (
. . .
)
}
// Entry.jsx
export default () => {
return (
. . .
<ComponentA />
<ComponentB />
<ComponentC />
. . .
)
}
// Approach B
// ComponentA.jsx
export default ({ user, token }) => {
. . .
return (
. . .
)
}
// ComponentB.jsx
export default ({ user, token }) => {
. . .
return (
. . .
)
}
// ComponentC.jsx
export default ({ user, token }) => {
. . .
return (
. . .
)
}
// Entry.jsx
export default () => {
const [user, token] = useSelector(({ auth: { user, token } }) => [user, token])
return (
. . .
<ComponentA user={user} token={token} />
<ComponentB user={user} token={token} />
<ComponentC user={user} token={token} />
. . .
)
}
Am I mistaken, and there is really no difference, or is there a better approach of the two?