ребенка? Код такой:
<div>
<A><B/></A>
</div>
function A({ children }) {
console.log('A')
const [state, setState] = useState(0)
useEffect(() => {
setState(state => state + 1)
}, [])
return children
}
function B() {
console.log('B')
return null
}
в консоли А, В, А
https://legacy.reactjs.org/docs/reconciliation.html
тогда почему в этом коде будет А, В, А, В function App() { const [state, setState] = useState(0) useEffect(() => { setState(state => state + 1) }, []) console.log('App') return ( <div> <A/> </div> ) } function A() { console.log('A') return <B/> } function B() { console.log('B') return null }
Потому что у тебЯ перерисовывается <A> и вызывает return <B> это вызывает перерисовку B
return children тоже вызывается <B>, почему нет перерисовки?
children не менялся, там ссылка на старый элемент
поняла, спасибо
Потому что вызывается перерисовка А, у тебя в обоих случаях, только в одном случае B у тебя внешняя зависимость, а в другом случае внутряняя, у тебя компонент во втором случае создает новый Б, это вызовет обновление Б ПО сути у тебя два твоих кода так можно записать Код 1 const b=<B /> function A(){ return b; } Код 2 function A(){ return <B /> }
О, а ты давно тут одмен?
Обсуждают сегодня