Reactjs состояние обновлено, но не может получить к нему доступ в laravel Эхо - PullRequest
0 голосов
/ 09 апреля 2020

Привет, ребята, так что я работал с laravel echo в течение последних нескольких дней, все работает хорошо, пока я не попробовал шепот, чтобы послать событие набора текста. теперь проблема, с которой я столкнулся, заключается в том, что я не могу получить доступ к новому состоянию, чтобы очистить тайм-аут, иначе это вызовет странную повторную визуализацию сообщения (пользователь печатает ...), состояние обновляется в хранилище, и я уже проверил его с помощью redux devtools. и я могу получить к нему доступ в компоненте, но я не могу получить к нему доступ в методе TypingNotification или listenForWhisper! какие-либо идеи об этом поведении!?

useEffect(()=>{
    startEcho();
},[]);
const startEcho = ()=>{
    Echo.join('chat')
        .listen('ChatEvent',function(message){
            if(message.sender_id !== props.logginData.user.id){
                props.updateMessagesAction(message);
            }
        })
        .here(loggedIn=>{
            console.log(loggedIn);
            props.setUsersHereAction([...loggedIn.map(e=> e.username)]);
        })
        .joining(user=>{
            props.setJoinedUserAction(user.username);
        })
        .leaving(user=>{
            props.setLeavingUserAction(user.username);
        })
        .listenForWhisper('typing',(e)=>{
            TypingNotification(e)
        })
};
const TypingNotification = (e) => {
    if(props.globalStore.messageTyping.typing){
        clearTimeout(props.globalStore.messageTyping.timerId);
    }
    let timerId = setTimeout(()=> {
        props.setUserStopedTyping();
    },3000)
    props.setUserIsTyping(e.name,timerId);
}
...