다음 코드가 있습니다:
으아아아문제는 let chatProps = useMultiChatLogic('xxxx-xx-x-xx-xxx', username, Secret);
在 useEffect
가 완료되기 전에 실행된다는 것입니다. 나는 그것을 .then 내부로 옮기려고 시도했지만 후크 오류와 다른 것들이 발생했지만 아무것도 작동하지 않았습니다.
P粉9830211772024-04-02 00:44:59
React에 대한 기본적인 이해가 부족한 것 같습니다. 상태, useEffect
및 일반 제어 흐름에 대한 이 튜토리얼을 확인하세요.
useEffect
是异步的——首次渲染后以及每当设置依赖项数组中捕获的变量时,React 都会执行回调。您的依赖项数组为空,因此此 useEffect
는 비동기식입니다. React는 첫 번째 렌더링 후 그리고 종속성 배열에 캡처된 변수가 설정될 때마다 콜백을 실행합니다. 종속성 배열이 비어 있으므로 이
Multi가 무엇인지는 모르지만 다음과 같이 시도해 볼 수 있습니다.
으아아아
username
和 secret
仍然是默认的空字符串,因此我们渲染一条加载消息。渲染后,useEffect
여기서 첫 번째 렌더링에서는 username
및 secret
이 여전히 기본 빈 문자열이기 때문에 요청이 아직 완료되지 않았음을 알고 로딩 메시지를 렌더링합니다. 렌더링 후
username
和 secret
设置状态,这会触发另一个渲染。在此渲染上,响应中的 username
和 secret
值可用(我假设它们保证在响应中为非空字符串),因此不会渲染加载消息。相反,我们渲染 ChatsPage
잠시 후 응답이 도착하고 응답 데이터와 함께 props를 받아들이는
useMultiChatLogic
这样的钩子 必须在任何条件之上声明< /a>.如果这不是一个钩子,那么调用可以发生在 if
추가 구성요소는
setState
来完成,而不是 =
React의 황금률은 상태가 불변이라는 것입니다. 따라서 한 렌더링에서 다음 렌더링으로 데이터가 변경되면 통과해야 합니다