Javascript 如何从另一个组件调用函数

Javascript 如何从另一个组件调用函数,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我试图从其他组件调用函数,但当我调用console.log('hi')时,它出现了,但没有调用messageContext 以下是我在Invitees.js中的以下代码: const [showPreview, setShowPreview] = useState(false); const toggleUserPreview = () => { setShowPreview(!showPreview); }; {showPreview &&

我试图从其他组件调用函数,但当我调用console.log('hi')时,它出现了,但没有调用
messageContext

以下是我在
Invitees.js
中的以下代码:

  const [showPreview, setShowPreview] = useState(false);

  const toggleUserPreview = () => {
    setShowPreview(!showPreview);
  };
      {showPreview && (
        <ResultsWrappers togglePreview={toggleUserPreview}>
          <UserPreview
            userInfo={applicant}
            skillStr={applicant.Skills}
            togglePreview={toggleUserPreview}
          />
        </ResultsWrappers>
      )}
import { useMessageContextProvider } from "../context/MessageContext";
const UserPreview = ({ userInfo, skillStr, togglePreview }) => {
 const messageContextProvider = useMessageContextProvider();
  const messageUser = () => {
    togglePreview();
    messageContextProvider.updateActiveUserToMessage(userInfo);
    console.log('hi');
  };
...
})

以下是我的信息上下文:

import { createContext, useContext, useState } from "react";
const messageContext = createContext();
export const MessageContextProvider = ({ children }) => {
  const [activeUserToMessage, setActiveUserToMessage] = useState({});
  const [isOpenMobileChat, toggleMobileChat] = useState(false);
  const updateActiveUserToMessage = (user) => {
    setActiveUserToMessage(user);
  };
  return (
    <messageContext.Provider
      value={{
        updateActiveUserToMessage,
        activeUserToMessage,
        isOpenMobileChat,
        toggleMobileChat,
      }}
    >
      {children}
    </messageContext.Provider>
  );
};
export const useMessageContextProvider = () => {
  return useContext(messageContext);
};
从“react”导入{createContext,useContext,useState};
const messageContext=createContext();
export const MessageContextProvider=({children})=>{
const[activeUserToMessage,setActiveUserToMessage]=useState({});
const[isOpenMobileChat,toggleMobileChat]=使用状态(false);
const updateActivUserMessage=(用户)=>{
setActiveUserToMessage(用户);
};
返回(
{儿童}
);
};
导出常量useMessageContextProvider=()=>{
返回useContext(messageContext);
};
当调用
messageContext
时,它应该像这样打开聊天框:


您显示的代码不足以100%显示它,但它似乎是
toggleUserPreview
-函数调用了两次,所以它恢复为原始布尔值

一次作为


第二次作为

你怎么知道
更新活动消息
没有被调用?我认为没有办法不从提供的代码段中调用它。你做了什么调试?我只是在问题中添加了更多细节!聊天室是什么?什么打开聊天室?你的问题似乎没有上下文。请尝试将其更新为包含。