Commit 0d3f9b0c by HoMeTown

fix: 修复了asking过程中切换页面不可以继续提问的问题

parent 40adcf16
...@@ -6,8 +6,7 @@ import { LoginModal } from '../LoginModal' ...@@ -6,8 +6,7 @@ import { LoginModal } from '../LoginModal'
import type { RootState } from '@/store' import type { RootState } from '@/store'
import SendIcon from '@/assets/svg/send.svg?react' import SendIcon from '@/assets/svg/send.svg?react'
import { type WithAuthProps, withAuth } from '@/auth/withAuth' import { type WithAuthProps, withAuth } from '@/auth/withAuth'
import { setIsAsking } from '@/store/chatSlice' import { useAppSelector } from '@/store/hook'
import { useAppDispatch, useAppSelector } from '@/store/hook'
interface ChatEditorProps { interface ChatEditorProps {
onChange?: (value: string) => void onChange?: (value: string) => void
...@@ -17,7 +16,7 @@ interface ChatEditorProps { ...@@ -17,7 +16,7 @@ interface ChatEditorProps {
} }
const ChatEditorBase: React.FC<ChatEditorProps & WithAuthProps> = ({ checkAuth, onChange, onFocus, onSubmit, placeholders }) => { const ChatEditorBase: React.FC<ChatEditorProps & WithAuthProps> = ({ checkAuth, onChange, onFocus, onSubmit, placeholders }) => {
const dispatch = useAppDispatch() // const dispatch = useAppDispatch()
const [content, setContent] = useState('') const [content, setContent] = useState('')
const editorRef = useRef<HTMLDivElement>(null) const editorRef = useRef<HTMLDivElement>(null)
const [currentPlaceholder, setCurrentPlaceholder] = useState(0) const [currentPlaceholder, setCurrentPlaceholder] = useState(0)
...@@ -92,9 +91,10 @@ const ChatEditorBase: React.FC<ChatEditorProps & WithAuthProps> = ({ checkAuth, ...@@ -92,9 +91,10 @@ const ChatEditorBase: React.FC<ChatEditorProps & WithAuthProps> = ({ checkAuth,
clearInterval(intervalRef.current) clearInterval(intervalRef.current)
} }
document.removeEventListener('visibilitychange', handleVisibilityChange) document.removeEventListener('visibilitychange', handleVisibilityChange)
if (isAsking) { // console.log(isAsking, 'isAskingisAsking')
dispatch(setIsAsking(false)) // if (isAsking) {
} // dispatch(setIsAsking(false))
// }
} }
}, [content]) }, [content])
return ( return (
......
import React, { useEffect } from 'react' import React, { useEffect } from 'react'
import { useLocation, useNavigate } from 'react-router-dom' import { useLocation, useNavigate } from 'react-router-dom'
import { clearCurrentConversation, setCurrentConversation } from '@/store/conversationSlice' import { clearCurrentConversation, setCurrentConversation } from '@/store/conversationSlice'
import { useAppDispatch } from '@/store/hook' import { useAppDispatch, useAppSelector } from '@/store/hook'
import { setIsAsking } from '@/store/chatSlice'
import type { RootState } from '@/store'
export function withRouteChangeHandler(WrappedComponent: React.ComponentType) { export function withRouteChangeHandler(WrappedComponent: React.ComponentType) {
let beforeLocationPathName = ''
return (props: any) => { return (props: any) => {
const isAsking = useAppSelector((state: RootState) => state.chat.isAsking)
const location = useLocation() const location = useLocation()
const dispatch = useAppDispatch() const dispatch = useAppDispatch()
const navigate = useNavigate() const navigate = useNavigate()
const newPath = location.pathname
const oldPath = beforeLocationPathName
useEffect(() => { useEffect(() => {
if (isAsking && newPath !== oldPath && oldPath !== '') {
dispatch(setIsAsking(false))
}
if (location.pathname === '/') { if (location.pathname === '/') {
dispatch(clearCurrentConversation()) dispatch(clearCurrentConversation())
} }
...@@ -25,6 +36,7 @@ export function withRouteChangeHandler(WrappedComponent: React.ComponentType) { ...@@ -25,6 +36,7 @@ export function withRouteChangeHandler(WrappedComponent: React.ComponentType) {
dispatch(setCurrentConversation(conversationId)) dispatch(setCurrentConversation(conversationId))
} }
// 这里可以添加其他路由相关的逻辑 // 这里可以添加其他路由相关的逻辑
beforeLocationPathName = newPath
}, [location, dispatch]) }, [location, dispatch])
return <WrappedComponent {...props} /> return <WrappedComponent {...props} />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment