我正在使用React+ASP.NET应用程序,并使用视频开发工具包API进行视频会议.

const meetingAPI = useMeeting({
onMeetingJoined: () => {
      meetinAPI.muteMic();
      meetinAPI.disableWebcam();
      if (isCreator) {
        let intervalId = setInterval(async () => {
          console.log(
            "minutes",
            minutes +
              gameHash.ActivePlayers.length
          );
          if (
            minutes + gameHash.ActivePlayers.length >= asset.VideoTime - 10 * ActivePlayers.length
          ) {
            setVideoMinutesRunoutModalOpen(true);
          }
        }, 1000 * 60);
        setTimerId(intervalId);
      }
      setIsMeetingJoined(true);
    },
})

IsCreator和gameHash是组件状态. 当它改变时,我也期待onMeetingJoated改变中的值. 但它始终是初始值. 我怎么才能解决这个问题?

我try 过使用useCallback或useMemo. 但这并不管用.

推荐答案

我以前也遇到过同样的问题. 他们的支持团队非常乐于助人. 您可以使用状态引用来实现这一点.

const stateRef = useRef();
stateRef.current = {
  minutes: minutes,
  gameHash: gameHash
};

onMeetingJoined: () => {
      meetinAPI.muteMic();
      meetinAPI.disableWebcam();
      if (stateRef.current.isCreator) {
        let intervalId = setInterval(async () => {
          console.log(
            "minutes",
            stateRef.current.minutes +
              stateRef.current.gameHash.ActivePlayers.length
          );
          if (
            stateRef.current.minutes +
              stateRef.current.gameHash.ActivePlayers.length >=
            stateRef.current.asset.VideoTime -
              10 * stateRef.current.gameHash.ActivePlayers.length
          ) {
            setVideoMinutesRunoutModalOpen(true);
          }
        }, 1000 * 60);
        setTimerId(intervalId);
      }
      setIsMeetingJoined(true);
    },

如您所见,stateRef是您所在州的引用. OnMeetingJoven是第三方回调,因此不会反映您的状态更改. 这就是解决方案.

Reactjs相关问答推荐

在Reaction+Redux+RTKQuery中对API调用进行排序

Tailwind不使用@apply classes构建,并强制使用类似于移动的viewport

UseEffect和useSelector的奇怪问题导致无限循环

在构建或部署Reaction应用程序时出错

Reaction上下文值无法传递给其他组件

有没有比;KeyableShell;组成部分

获取 不能显示为 的后代.错误,但不太确定如何构建我的代码以避免此警告

无法从子组件传递数据到父组件

React:如何使用条件渲染和react 挂钩来更新另一个组件的状态?

部署到github pages时请求路径错误

如何在react 中正确销毁上下文?

null 不是对象(判断RNSound.IsAndroid)

如何检索包含动态段的未解析路径?

使用 React.UseEffect 从 api 获取但我的清理返回不起作用

如何使用react 路由将 url 参数限制为一组特定的值?

您无权使用阻止 webRequest 侦听器.请务必在 list 中声明 webRequestBlocking 权限

axios post方法中的请求失败,状态码为500错误

运行开发服务器时如何为 Vite 指定运行时目录

useEffect 仅在跟随链接后有效,不适用于直接链接

根据计算 ReactJs 更新输入字段