From e074d140167f2d3d7371a69e47bea6cfe24d0c37 Mon Sep 17 00:00:00 2001 From: MaggieMii <1350383261@qq.com> Date: Wed, 11 Sep 2024 16:58:30 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E2=9C=A8=20feat:=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=88=97=E8=A1=A8=E9=A1=B5=E9=9D=A2=20?= =?UTF-8?q?=E5=8F=8A=E5=88=97=E8=A1=A8=E5=88=B0=E8=AF=A6=E6=83=85=E7=9A=84?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app.config.ts | 2 +- src/auto-imports.d.ts | 144 ++++++++--------- .../assets/img/publishQuestion/answer.png | Bin 0 -> 634 bytes .../QuestionDetail/QuestionDetail.tsx | 47 ++++-- .../QuestionListComponent.tsx | 126 +++++++++++++++ .../QuestionListComponent/index.scss | 73 +++++++++ src/pages/QuestionList/index.config.ts | 4 + src/pages/QuestionList/index.scss | 0 src/pages/QuestionList/index.tsx | 105 ++++++++++++ src/pages/questionInfo/index.tsx | 150 ++++++++++++++---- 10 files changed, 534 insertions(+), 117 deletions(-) create mode 100644 src/common/assets/img/publishQuestion/answer.png create mode 100644 src/common/components/QuestionListComponent/QuestionListComponent.tsx create mode 100644 src/common/components/QuestionListComponent/index.scss create mode 100644 src/pages/QuestionList/index.config.ts create mode 100644 src/pages/QuestionList/index.scss create mode 100644 src/pages/QuestionList/index.tsx diff --git a/src/app.config.ts b/src/app.config.ts index e8b63e4..6b690fe 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -1,9 +1,9 @@ export default defineAppConfig({ pages: [ + 'pages/QuestionList/index', 'pages/questionInfo/index', 'pages/login/index', 'pages/main/index', - 'pages/publishQuestion/index', 'pages/classInfo/index', 'pages/evaluateInfo/index', 'pages/profile/index', diff --git a/src/auto-imports.d.ts b/src/auto-imports.d.ts index 985f2e1..28514c4 100644 --- a/src/auto-imports.d.ts +++ b/src/auto-imports.d.ts @@ -3,77 +3,77 @@ // @ts-nocheck // noinspection JSUnusedGlobalSymbols // Generated by unplugin-auto-import -export { } +export {} declare global { - const useAPICheck: (typeof import('taro-hooks'))['useAPICheck']; - const useAccountInfo: (typeof import('taro-hooks'))['useAccountInfo']; - const useActionSheet: (typeof import('taro-hooks'))['useActionSheet']; - const useAlertBeforeUnload: (typeof import('taro-hooks'))['useAlertBeforeUnload']; - const useApp: (typeof import('taro-hooks'))['useApp']; - const useArrayBuffer: (typeof import('taro-hooks'))['useArrayBuffer']; - const useAudio: (typeof import('taro-hooks'))['useAudio']; - const useAuthorize: (typeof import('taro-hooks'))['useAuthorize']; - const useBackground: (typeof import('taro-hooks'))['useBackground']; - const useBattery: (typeof import('taro-hooks'))['useBattery']; - const useBluetooth: (typeof import('taro-hooks'))['useBluetooth']; - const useBoolean: (typeof import('taro-hooks'))['useBoolean']; - const useBrightness: (typeof import('taro-hooks'))['useBrightness']; - const useCamera: (typeof import('taro-hooks'))['useCamera']; - const useChooseAddress: (typeof import('taro-hooks'))['useChooseAddress']; - const useClipboardData: (typeof import('taro-hooks'))['useClipboardData']; - const useCreation: (typeof import('taro-hooks'))['useCreation']; - const useDebounce: (typeof import('taro-hooks'))['useDebounce']; - const useDebounceFn: (typeof import('taro-hooks'))['useDebounceFn']; - const useDeviceInfo: (typeof import('taro-hooks'))['useDeviceInfo']; - const useEnterOptions: (typeof import('taro-hooks'))['useEnterOptions']; - const useEnv: (typeof import('taro-hooks'))['useEnv']; - const useEvent: (typeof import('taro-hooks'))['useEvent']; - const useFile: (typeof import('taro-hooks'))['useFile']; - const useFrom: (typeof import('taro-hooks'))['useFrom']; - const useImage: (typeof import('taro-hooks'))['useImage']; - const useInvoice: (typeof import('taro-hooks'))['useInvoice']; - const useKeyboard: (typeof import('taro-hooks'))['useKeyboard']; - const useLatest: (typeof import('taro-hooks'))['useLatest']; - const useLaunchOptions: (typeof import('taro-hooks'))['useLaunchOptions']; - const useLoading: (typeof import('taro-hooks'))['useLoading']; - const useLocation: (typeof import('taro-hooks'))['useLocation']; - const useLogin: (typeof import('taro-hooks'))['useLogin']; - const useManualPullDownRefresh: (typeof import('taro-hooks'))['useManualPullDownRefresh']; - const useMap: (typeof import('taro-hooks'))['useMap']; - const useMemoizedFn: (typeof import('taro-hooks'))['useMemoizedFn']; - const useMenuButtonBoundingClientRect: (typeof import('taro-hooks'))['useMenuButtonBoundingClientRect']; - const useModal: (typeof import('taro-hooks'))['useModal']; - const useMotion: (typeof import('taro-hooks'))['useMotion']; - const useMount: (typeof import('taro-hooks'))['useMount']; - const useNavigationBar: (typeof import('taro-hooks'))['useNavigationBar']; - const useNetworkType: (typeof import('taro-hooks'))['useNetworkType']; - const useOnline: (typeof import('taro-hooks'))['useOnline']; - const usePage: (typeof import('taro-hooks'))['usePage']; - const usePreload: (typeof import('taro-hooks'))['usePreload']; - const usePromise: (typeof import('taro-hooks'))['usePromise']; - const useRecord: (typeof import('taro-hooks'))['useRecord']; - const useRequest: (typeof import('taro-hooks'))['useRequest']; - const useRequestSubscribeMessage: (typeof import('taro-hooks'))['useRequestSubscribeMessage']; - const useRouter: (typeof import('taro-hooks'))['useRouter']; - const useScanCode: (typeof import('taro-hooks'))['useScanCode']; - const useSelectorQuery: (typeof import('taro-hooks'))['useSelectorQuery']; - const useStorage: (typeof import('taro-hooks'))['useStorage']; - const useSystemInfo: (typeof import('taro-hooks'))['useSystemInfo']; - const useTabBar: (typeof import('taro-hooks'))['useTabBar']; - const useThrottle: (typeof import('taro-hooks'))['useThrottle']; - const useThrottleFn: (typeof import('taro-hooks'))['useThrottleFn']; - const useToast: (typeof import('taro-hooks'))['useToast']; - const useToggle: (typeof import('taro-hooks'))['useToggle']; - const useTopBarText: (typeof import('taro-hooks'))['useTopBarText']; - const useUnmount: (typeof import('taro-hooks'))['useUnmount']; - const useUpdate: (typeof import('taro-hooks'))['useUpdate']; - const useUpdateEffect: (typeof import('taro-hooks'))['useUpdateEffect']; - const useUpdateManager: (typeof import('taro-hooks'))['useUpdateManager']; - const useUserInfo: (typeof import('taro-hooks'))['useUserInfo']; - const useVibrate: (typeof import('taro-hooks'))['useVibrate']; - const useVideo: (typeof import('taro-hooks'))['useVideo']; - const useVisible: (typeof import('taro-hooks'))['useVisible']; - const useWeRun: (typeof import('taro-hooks'))['useWeRun']; - const useWebp: (typeof import('taro-hooks'))['useWebp']; - const useWindowInfo: (typeof import('taro-hooks'))['useWindowInfo']; + const useAPICheck: typeof import('taro-hooks')['useAPICheck'] + const useAccountInfo: typeof import('taro-hooks')['useAccountInfo'] + const useActionSheet: typeof import('taro-hooks')['useActionSheet'] + const useAlertBeforeUnload: typeof import('taro-hooks')['useAlertBeforeUnload'] + const useApp: typeof import('taro-hooks')['useApp'] + const useArrayBuffer: typeof import('taro-hooks')['useArrayBuffer'] + const useAudio: typeof import('taro-hooks')['useAudio'] + const useAuthorize: typeof import('taro-hooks')['useAuthorize'] + const useBackground: typeof import('taro-hooks')['useBackground'] + const useBattery: typeof import('taro-hooks')['useBattery'] + const useBluetooth: typeof import('taro-hooks')['useBluetooth'] + const useBoolean: typeof import('taro-hooks')['useBoolean'] + const useBrightness: typeof import('taro-hooks')['useBrightness'] + const useCamera: typeof import('taro-hooks')['useCamera'] + const useChooseAddress: typeof import('taro-hooks')['useChooseAddress'] + const useClipboardData: typeof import('taro-hooks')['useClipboardData'] + const useCreation: typeof import('taro-hooks')['useCreation'] + const useDebounce: typeof import('taro-hooks')['useDebounce'] + const useDebounceFn: typeof import('taro-hooks')['useDebounceFn'] + const useDeviceInfo: typeof import('taro-hooks')['useDeviceInfo'] + const useEnterOptions: typeof import('taro-hooks')['useEnterOptions'] + const useEnv: typeof import('taro-hooks')['useEnv'] + const useEvent: typeof import('taro-hooks')['useEvent'] + const useFile: typeof import('taro-hooks')['useFile'] + const useFrom: typeof import('taro-hooks')['useFrom'] + const useImage: typeof import('taro-hooks')['useImage'] + const useInvoice: typeof import('taro-hooks')['useInvoice'] + const useKeyboard: typeof import('taro-hooks')['useKeyboard'] + const useLatest: typeof import('taro-hooks')['useLatest'] + const useLaunchOptions: typeof import('taro-hooks')['useLaunchOptions'] + const useLoading: typeof import('taro-hooks')['useLoading'] + const useLocation: typeof import('taro-hooks')['useLocation'] + const useLogin: typeof import('taro-hooks')['useLogin'] + const useManualPullDownRefresh: typeof import('taro-hooks')['useManualPullDownRefresh'] + const useMap: typeof import('taro-hooks')['useMap'] + const useMemoizedFn: typeof import('taro-hooks')['useMemoizedFn'] + const useMenuButtonBoundingClientRect: typeof import('taro-hooks')['useMenuButtonBoundingClientRect'] + const useModal: typeof import('taro-hooks')['useModal'] + const useMotion: typeof import('taro-hooks')['useMotion'] + const useMount: typeof import('taro-hooks')['useMount'] + const useNavigationBar: typeof import('taro-hooks')['useNavigationBar'] + const useNetworkType: typeof import('taro-hooks')['useNetworkType'] + const useOnline: typeof import('taro-hooks')['useOnline'] + const usePage: typeof import('taro-hooks')['usePage'] + const usePreload: typeof import('taro-hooks')['usePreload'] + const usePromise: typeof import('taro-hooks')['usePromise'] + const useRecord: typeof import('taro-hooks')['useRecord'] + const useRequest: typeof import('taro-hooks')['useRequest'] + const useRequestSubscribeMessage: typeof import('taro-hooks')['useRequestSubscribeMessage'] + const useRouter: typeof import('taro-hooks')['useRouter'] + const useScanCode: typeof import('taro-hooks')['useScanCode'] + const useSelectorQuery: typeof import('taro-hooks')['useSelectorQuery'] + const useStorage: typeof import('taro-hooks')['useStorage'] + const useSystemInfo: typeof import('taro-hooks')['useSystemInfo'] + const useTabBar: typeof import('taro-hooks')['useTabBar'] + const useThrottle: typeof import('taro-hooks')['useThrottle'] + const useThrottleFn: typeof import('taro-hooks')['useThrottleFn'] + const useToast: typeof import('taro-hooks')['useToast'] + const useToggle: typeof import('taro-hooks')['useToggle'] + const useTopBarText: typeof import('taro-hooks')['useTopBarText'] + const useUnmount: typeof import('taro-hooks')['useUnmount'] + const useUpdate: typeof import('taro-hooks')['useUpdate'] + const useUpdateEffect: typeof import('taro-hooks')['useUpdateEffect'] + const useUpdateManager: typeof import('taro-hooks')['useUpdateManager'] + const useUserInfo: typeof import('taro-hooks')['useUserInfo'] + const useVibrate: typeof import('taro-hooks')['useVibrate'] + const useVideo: typeof import('taro-hooks')['useVideo'] + const useVisible: typeof import('taro-hooks')['useVisible'] + const useWeRun: typeof import('taro-hooks')['useWeRun'] + const useWebp: typeof import('taro-hooks')['useWebp'] + const useWindowInfo: typeof import('taro-hooks')['useWindowInfo'] } diff --git a/src/common/assets/img/publishQuestion/answer.png b/src/common/assets/img/publishQuestion/answer.png new file mode 100644 index 0000000000000000000000000000000000000000..fe4ca4a421e1f61051e14d4a613cf6a0e25525a6 GIT binary patch literal 634 zcmV-=0)_pFP)Px%G)Y83R7gwJl|gdaPz;7YnHkc~B-l4-a|3dM&=Z87pk!0Rs^J8M6F^qPtH25B zo}lRonj_E~7`kX^XRIPaGKpiGH-vVk+CEAD)30BW=oP_y!9azkK)?=7;ii(%J?L;P zvyd_HZio3FrBaCZ5{@Jei3R+>1!Q?8;nXV9A`pSM%krCf6{l}X1L1?iC;MeU6TeMs z7IMA@Tjf&%gg9u^n2%^B9<2;eJ%^!Upo(y`|DK!dZ-0zvNQF4>&3xmKYk}iTTp>{3 zZ__iOD4h6J4sUM>79L}P$Zs>8T{1Mmyi2S@q@v8UK zEm686MD}rDkTR)EgEJ0imqZ9B1^p`RQ8s2$t8$*I=#+TfyPl(BHv=hrtt9kp=+@02 zh!WNI=o+2BJbDguSOTPc_LQLkSQT0I2~4d*tM2EB*9K_nET}La=uUB#;I~J;)=vA9 zYvyAQFFQ=r59RkNA4nk*B}Qo33PGRB{2o;ZmP)K!j0cgDuC%O`_sIGqtf+Iak0m}E z#gNXE1BmsoaFs2E>ISqa$$Gf|BcOjqoh?cSkr_*+6!q)Z@xdy2-qVp=SeGVmlRgXQBw`576rh UHcZN(ssI2007*qoM6N<$f^Z8T9{>OV literal 0 HcmV?d00001 diff --git a/src/common/components/QuestionDetail/QuestionDetail.tsx b/src/common/components/QuestionDetail/QuestionDetail.tsx index c866511..e3fc5dc 100644 --- a/src/common/components/QuestionDetail/QuestionDetail.tsx +++ b/src/common/components/QuestionDetail/QuestionDetail.tsx @@ -4,6 +4,8 @@ import React, { useEffect, useState } from 'react'; import askicon from '@/common/assets/img/publishQuestion/ask.png'; import PublishHeader from '@/common/components/PublishHeader/PublishHeader'; import { useCourseStore } from '@/pages/main/store/store'; +import answericon from '@/common/assets/img/publishQuestion/answer.png' + import IconFont from '../iconfont'; import './index.scss'; @@ -50,7 +52,7 @@ interface IAnswer { interface IQuestionProps { question: IQuestion; - answers: IAnswer[]; + answers: IAnswer[] | null; } const formatTime = (timestamp: number) => { @@ -68,24 +70,37 @@ const QuestionDetail: React.FC = ({ question, answers }) => { const dispatch = useCourseStore(({ getPublishers }) => ({ getPublishers })); const [questionDetail, setQuestion] = useState(question); - const [answersDetail, setAnswers] = useState(answers); + const [answersDetail, setAnswers] = useState(answers); + + useEffect(() => { const fetchAllPublishers = async () => { // 函数,用于获取每个答案的用户信息 async function getAnswersWithUserInfo(ianswers: IAnswer[]) { - const answersWithUserInfo = await Promise.all( - ianswers.map(async (answer) => { - const user = await dispatch.getPublishers(answer.publisher_id); - return { ...answer, user }; - }) - ); - return answersWithUserInfo; + try { + const answersWithUserInfo = await Promise.all( + ianswers.map(async (answer) => { + const user = await dispatch.getPublishers(answer.publisher_id); + return { ...answer, user }; + }) + ); + return answersWithUserInfo; + } catch (error) { + // 处理错误,返回一个空数组或其他适当的默认值 + console.error('Error fetching user info:', error); + return []; // 返回一个空数组 + } } - // 调用函数并处理结果 - const answersWithUserInfo = await getAnswersWithUserInfo(answers); - setAnswers(answersWithUserInfo); + // 确保 answers 不为 null + if (answers !== null) { + const answersWithUserInfo = await getAnswersWithUserInfo(answers); + setAnswers(answersWithUserInfo); + } else { + // 如果 answers 为 null,可以选择设置一个空数组或者执行其他逻辑 + setAnswers([]); + } // 函数,用于获取问题的提问者用户信息 async function getQuestionWithUserInfo(iquestion: IQuestion) { @@ -105,7 +120,7 @@ const QuestionDetail: React.FC = ({ question, answers }) => { }; void fetchAllPublishers(); - }); + },[question,answers]); return ( @@ -123,7 +138,7 @@ const QuestionDetail: React.FC = ({ question, answers }) => { - {answersDetail.map((answer, index) => ( + {answersDetail && answersDetail.map((answer, index) => ( = ({ question, answers }) => { { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - + } - 本网站使用cookies以提升您的使用体验及统计网站流量相关数据。继续使用本网站表示您同意我们使用cookies。我们的《隐私及Cookie政策》提供更多关于cookies使用及停用的相关信息。 + {answer?.content} diff --git a/src/common/components/QuestionListComponent/QuestionListComponent.tsx b/src/common/components/QuestionListComponent/QuestionListComponent.tsx new file mode 100644 index 0000000..c9c1693 --- /dev/null +++ b/src/common/components/QuestionListComponent/QuestionListComponent.tsx @@ -0,0 +1,126 @@ +import { Image, View } from '@tarojs/components'; +import React, { useEffect, useState } from 'react'; +import askicon from '@/common/assets/img/publishQuestion/ask.png'; +import answericon from '@/common/assets/img/publishQuestion/answer.png' +import PublishHeader from '@/common/components/PublishHeader/PublishHeader'; +import { useCourseStore } from '@/pages/main/store/store'; +import Taro from '@tarojs/taro'; + + +import './index.scss'; + +interface IUser { + avatar: string; + id: number; + nickname: string; +} + +interface IQuestion { + id: number; + questioner_id: number; + biz: string; + biz_id: number; + content: string; + answer_cnt: number; + preview_answers: Array<{ + id: number; + publisher_id: number; + question_id: number; + content: string; + utime: number; + ctime: number; + user?: IUser; + }>; + utime: number; + ctime: number; + user?: IUser; +} + +const formatTime = (timestamp: number) => { + const date = new Date(timestamp); + const year = date.getFullYear(); + const month = (date.getMonth() + 1).toString().padStart(2, '0'); + const day = date.getDate().toString().padStart(2, '0'); + const hour = date.getHours().toString().padStart(2, '0'); + const minute = date.getMinutes().toString().padStart(2, '0'); + const second = date.getSeconds().toString().padStart(2, '0'); + return `${year}-${month}-${day} ${hour}:${minute}:${second}`; +}; + +const QuestionListComponent: React.FC<{ question: IQuestion }> = ({ question }) => { + const dispatch = useCourseStore(({ getPublishers }) => ({ getPublishers })); + + const [questionDetail, setQuestion] = useState(question); + + useEffect(() => { + const fetchQuestionWithUserInfo = async () => { + try { + const user = await dispatch.getPublishers(question.questioner_id); + const questionWithUserInfo = { ...question, user }; + setQuestion(questionWithUserInfo); + + // 检查 preview_answers 是否存在并且是一个数组 + const previewAnswersWithUserInfo = question.preview_answers && question.preview_answers.length > 0 + ? await Promise.all( + question.preview_answers.map(async (answer) => { + const user = await dispatch.getPublishers(answer.publisher_id); + return { ...answer, user }; + }) + ) + : []; + + // 更新问题状态,包括填充了用户信息的 preview_answers + setQuestion((prev) => ({ + ...prev, + user: questionWithUserInfo.user, // 确保用户信息被设置 + preview_answers: previewAnswersWithUserInfo, + })); + } catch (error) { + console.error('Error fetching question with user info:', error); + } + }; + + void fetchQuestionWithUserInfo(); + }, [question]); + + const handleQuestionDetailClick = () => { + Taro.navigateTo({ + url: `/pages/questionInfo/index?id=${questionDetail.id}` + }); + }; + + return ( + + + + + + {questionDetail.content} + + + + {questionDetail.preview_answers && questionDetail.preview_answers.map((answer, index) => ( + + + + + + {answer.content} + + + + ))} + + + ); +}; + +export default QuestionListComponent; \ No newline at end of file diff --git a/src/common/components/QuestionListComponent/index.scss b/src/common/components/QuestionListComponent/index.scss new file mode 100644 index 0000000..3f0608c --- /dev/null +++ b/src/common/components/QuestionListComponent/index.scss @@ -0,0 +1,73 @@ +.questionDetail { + background-color: #f9f9f2; + width: 659.42rpx; + position: relative; + left: 50%; + transform: translateX(-50%); + display: flex; + flex-direction: column; + align-items: center; + margin: 20rpx 0; +} + +.question-detail { + width: 603.26rpx; + border-bottom: #e3e3e3 solid 2rpx; + padding-top: 40rpx; + padding-bottom: 35rpx; +} + +.answer-item { + @extend .question-detail; +} + +.askicon { + width: 44.44rpx; + height: 47.05rpx; + margin-left: 22rpx; + margin-right: 60rpx; +} + +.question-item { + font-size: 21.74rpx; + color: #565552; + display: flex; + margin-top: 20rpx; +} + +.question-value { + max-width: 471rpx; + margin-top: 5rpx; +} + +.answer-content { + @extend .question-value; +} + +.icon { + width: 40rpx; + height: 40rpx; + box-shadow: 0rpx 5rpx 11rpx 2rpx rgba(0, 0, 0, 0.16); + opacity: 1; + border-radius: 50%; + display: inline-block; + text-align: center; + line-height: 40rpx; + // margin-left: 15rpx; + Image { + width: 100%; + height: 100%; + } +} +.text1 { + font-size: 22rpx; + font-weight: bold; + color: #565552; + margin: 0 10rpx; +} + +.answer-statistics { + display: flex; + align-items: center; + margin-left: 450rpx; +} diff --git a/src/pages/QuestionList/index.config.ts b/src/pages/QuestionList/index.config.ts new file mode 100644 index 0000000..fd01a30 --- /dev/null +++ b/src/pages/QuestionList/index.config.ts @@ -0,0 +1,4 @@ +export default definePageConfig({ + navigationBarTitleText: '问问同学', + navigationBarBackgroundColor: '#F9F9F2', +}); diff --git a/src/pages/QuestionList/index.scss b/src/pages/QuestionList/index.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/QuestionList/index.tsx b/src/pages/QuestionList/index.tsx new file mode 100644 index 0000000..232766d --- /dev/null +++ b/src/pages/QuestionList/index.tsx @@ -0,0 +1,105 @@ +// import React from 'react'; +import { View } from '@tarojs/components'; +import { Course } from '@/common/assets/types'; +import { useState,useEffect } from 'react'; +import { get } from '@/common/utils/fetch'; +import CourseInfo from '@/common/components/CourseInfo/CourseInfo'; +import QuestionListComponent from '@/common/components/QuestionListComponent/QuestionListComponent'; + +interface IQuestion { + id: number; + questioner_id: number; + biz: string; + biz_id: number; + content: string; + answer_cnt: number; + preview_answers: Array<{ + id: number; + publisher_id: number; + question_id: number; + content: string; + utime: number; + ctime: number; + }>; + utime: number; + ctime: number; + } + +const App = () => { +// const questions = [ +// { +// "id": 5, +// "questioner_id": 5208, +// "biz": "Course", +// "biz_id": 2347, +// "content": "这节课怎么样?", +// "answer_cnt": 0, +// "preview_answers": [ +// { +// "id": 5, +// "publisher_id": 5208, +// "question_id": 5, +// "content": "我觉得很不错", +// "utime": 1725039834700, +// "ctime": 1725039834700 +// } +// ], +// "utime": 1725039765090, +// "ctime": 1725039765090 +// } +// ]; + + + const [course, setCourse] = useState(null); + const [questions, setQuestions] = useState(null); + const courseId = 2347; //先用概率统计A来调试吧 + + useEffect(()=>{ + // eslint-disable-next-line @typescript-eslint/require-await + const getCourseData = async () => { + try { + void get(`/courses/${courseId}/detail`, true).then((res) => { + console.log(res); + // 检查 res 是否有 data 属性,并且断言其类型 + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + setCourse(res?.data as Course); + }); + } catch (error) { + // 错误处理,例如弹出提示 + console.error('Failed to fetch course data:', error); + } + }; + + if (courseId) void getCourseData().then((r) => console.log(r)); + + // eslint-disable-next-line @typescript-eslint/require-await + const getQuestionList = async () => { + try { + void get(`/questions/list?biz=Course&biz_id=${courseId}&cur_question_id=0&limit=100`, true).then((res) => { + console.log(res); + // 检查 res 是否有 data 属性,并且断言其类型 + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + setQuestions(res?.data as IQuestion[]); + }); + } catch (error) { + // 错误处理,例如弹出提示 + console.error('Failed to fetch course data:', error); + } + }; + + if (courseId) void getQuestionList().then((r) => console.log(r)); + + },[courseId]) + + + return ( + + + {questions!==null && questions.map((question, index) => ( + + ))} + + ); +}; + +export default App; \ No newline at end of file diff --git a/src/pages/questionInfo/index.tsx b/src/pages/questionInfo/index.tsx index df45128..b9f40db 100644 --- a/src/pages/questionInfo/index.tsx +++ b/src/pages/questionInfo/index.tsx @@ -4,38 +4,92 @@ import QuestionDetail from '@/common/components/QuestionDetail/QuestionDetail'; import { get } from '@/common/utils/fetch'; import { View } from '@tarojs/components'; import React, { useEffect, useState } from 'react'; +import Taro from '@tarojs/taro'; + +interface IQuestion { + id: number; + questioner_id: number; + biz: string; + biz_id: number; + content: string; + answer_cnt: number; + preview_answers: null | Array<{ + id: number; + publisher_id: number; + question_id: number; + content: string; + utime: number; + ctime: number; + }>; + utime: number; + ctime: number; +} + +interface IAnswer { + id: number; + publisher_id: number; + question_id: number; + content: string; + stance: number; + total_support_count: number; + total_oppose_count: number; + total_comment_count: number; + utime: number; + ctime: number; +} const Index: React.FC = () => { - const question = { - id: 5, - questioner_id: 5208, - biz: 'Course', - biz_id: 2347, - content: '这节课怎么样?', - answer_cnt: 0, - preview_answers: null, - utime: 1725039765090, - ctime: 1725039765090, - }; - - const answers = [ - { - id: 5, - publisher_id: 5208, - question_id: 5, - content: '我觉得很不错', - stance: 0, - total_support_count: 0, - total_oppose_count: 0, - total_comment_count: 0, - utime: 1725039834700, - ctime: 1725039834700, - }, - ]; + // const question = { + // id: 5, + // questioner_id: 5208, + // biz: 'Course', + // biz_id: 2347, + // content: '这节课怎么样?', + // answer_cnt: 0, + // preview_answers: null, + // utime: 1725039765090, + // ctime: 1725039765090, + // }; + + // const answers = [ + // { + // id: 5, + // publisher_id: 5208, + // question_id: 5, + // content: '我觉得很不错', + // stance: 0, + // total_support_count: 0, + // total_oppose_count: 0, + // total_comment_count: 0, + // utime: 1725039834700, + // ctime: 1725039834700, + // }, + // ]; const [course, setCourse] = useState(null); + const [question,setQuestion] = useState(null); + + const [answers,setAnswers] = useState(null); + + + const courseId = 2347; //先用概率统计A来调试吧 + const [questionId,setQuestionId] = useState(null); + + // const questionId = 5; + + useEffect(() => { + const getParams = () => { + const instance = Taro.getCurrentInstance(); + // 使用可选链操作符安全访问 router 和 params + const params = instance?.router?.params || {}; + + if (params.id) setQuestionId(params.id); + }; + + getParams(); + }, []); // 这个 effect 仅在组件挂载时运行一次 useEffect(() => { // eslint-disable-next-line @typescript-eslint/require-await @@ -54,12 +108,52 @@ const Index: React.FC = () => { }; if (courseId) void getCourseData().then((r) => console.log(r)); - }, [courseId]); // 在courseId变化时运行 + + // eslint-disable-next-line @typescript-eslint/require-await + const getQuestionDetail = async () => { + try { + void get(`/questions/${questionId}/detail`, true).then((res) => { + console.log(res); + // 检查 res 是否有 data 属性,并且断言其类型 + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + setQuestion(res?.data as IQuestion); + }); + } catch (error) { + // 错误处理,例如弹出提示 + console.error('Failed to fetch course data:', error); + } + }; + + if (courseId) void getQuestionDetail().then((r) => console.log(r)); + + // eslint-disable-next-line @typescript-eslint/require-await + const getAnswersList = async () => { + try { + void get(`/answers/list/questions/${questionId}?cur_answer_id=0&limit=100`, true).then((res) => { + console.log(res); + // 检查 res 是否有 data 属性,并且断言其类型 + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + setAnswers(res?.data as IAnswer[]); + }); + } catch (error) { + // 错误处理,例如弹出提示 + console.error('Failed to fetch course data:', error); + } + }; + + if (courseId) void getAnswersList().then((r) => console.log(r)); + + }, [courseId,questionId]); // 在courseId变化时运行 return ( - + { + question ? + + : '' + } + ); }; From 09e925cec5b00ab1aca03a27d29ee6d4bea15887 Mon Sep 17 00:00:00 2001 From: MaggieMii <1350383261@qq.com> Date: Wed, 11 Sep 2024 17:04:40 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=F0=9F=8C=88=20style:=20prettier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/auto-imports.d.ts | 144 ++++++++--------- .../QuestionDetail/QuestionDetail.tsx | 60 ++++--- .../QuestionListComponent.tsx | 59 ++++--- src/pages/QuestionList/index.tsx | 151 +++++++++--------- src/pages/questionInfo/index.tsx | 29 ++-- 5 files changed, 217 insertions(+), 226 deletions(-) diff --git a/src/auto-imports.d.ts b/src/auto-imports.d.ts index 28514c4..985f2e1 100644 --- a/src/auto-imports.d.ts +++ b/src/auto-imports.d.ts @@ -3,77 +3,77 @@ // @ts-nocheck // noinspection JSUnusedGlobalSymbols // Generated by unplugin-auto-import -export {} +export { } declare global { - const useAPICheck: typeof import('taro-hooks')['useAPICheck'] - const useAccountInfo: typeof import('taro-hooks')['useAccountInfo'] - const useActionSheet: typeof import('taro-hooks')['useActionSheet'] - const useAlertBeforeUnload: typeof import('taro-hooks')['useAlertBeforeUnload'] - const useApp: typeof import('taro-hooks')['useApp'] - const useArrayBuffer: typeof import('taro-hooks')['useArrayBuffer'] - const useAudio: typeof import('taro-hooks')['useAudio'] - const useAuthorize: typeof import('taro-hooks')['useAuthorize'] - const useBackground: typeof import('taro-hooks')['useBackground'] - const useBattery: typeof import('taro-hooks')['useBattery'] - const useBluetooth: typeof import('taro-hooks')['useBluetooth'] - const useBoolean: typeof import('taro-hooks')['useBoolean'] - const useBrightness: typeof import('taro-hooks')['useBrightness'] - const useCamera: typeof import('taro-hooks')['useCamera'] - const useChooseAddress: typeof import('taro-hooks')['useChooseAddress'] - const useClipboardData: typeof import('taro-hooks')['useClipboardData'] - const useCreation: typeof import('taro-hooks')['useCreation'] - const useDebounce: typeof import('taro-hooks')['useDebounce'] - const useDebounceFn: typeof import('taro-hooks')['useDebounceFn'] - const useDeviceInfo: typeof import('taro-hooks')['useDeviceInfo'] - const useEnterOptions: typeof import('taro-hooks')['useEnterOptions'] - const useEnv: typeof import('taro-hooks')['useEnv'] - const useEvent: typeof import('taro-hooks')['useEvent'] - const useFile: typeof import('taro-hooks')['useFile'] - const useFrom: typeof import('taro-hooks')['useFrom'] - const useImage: typeof import('taro-hooks')['useImage'] - const useInvoice: typeof import('taro-hooks')['useInvoice'] - const useKeyboard: typeof import('taro-hooks')['useKeyboard'] - const useLatest: typeof import('taro-hooks')['useLatest'] - const useLaunchOptions: typeof import('taro-hooks')['useLaunchOptions'] - const useLoading: typeof import('taro-hooks')['useLoading'] - const useLocation: typeof import('taro-hooks')['useLocation'] - const useLogin: typeof import('taro-hooks')['useLogin'] - const useManualPullDownRefresh: typeof import('taro-hooks')['useManualPullDownRefresh'] - const useMap: typeof import('taro-hooks')['useMap'] - const useMemoizedFn: typeof import('taro-hooks')['useMemoizedFn'] - const useMenuButtonBoundingClientRect: typeof import('taro-hooks')['useMenuButtonBoundingClientRect'] - const useModal: typeof import('taro-hooks')['useModal'] - const useMotion: typeof import('taro-hooks')['useMotion'] - const useMount: typeof import('taro-hooks')['useMount'] - const useNavigationBar: typeof import('taro-hooks')['useNavigationBar'] - const useNetworkType: typeof import('taro-hooks')['useNetworkType'] - const useOnline: typeof import('taro-hooks')['useOnline'] - const usePage: typeof import('taro-hooks')['usePage'] - const usePreload: typeof import('taro-hooks')['usePreload'] - const usePromise: typeof import('taro-hooks')['usePromise'] - const useRecord: typeof import('taro-hooks')['useRecord'] - const useRequest: typeof import('taro-hooks')['useRequest'] - const useRequestSubscribeMessage: typeof import('taro-hooks')['useRequestSubscribeMessage'] - const useRouter: typeof import('taro-hooks')['useRouter'] - const useScanCode: typeof import('taro-hooks')['useScanCode'] - const useSelectorQuery: typeof import('taro-hooks')['useSelectorQuery'] - const useStorage: typeof import('taro-hooks')['useStorage'] - const useSystemInfo: typeof import('taro-hooks')['useSystemInfo'] - const useTabBar: typeof import('taro-hooks')['useTabBar'] - const useThrottle: typeof import('taro-hooks')['useThrottle'] - const useThrottleFn: typeof import('taro-hooks')['useThrottleFn'] - const useToast: typeof import('taro-hooks')['useToast'] - const useToggle: typeof import('taro-hooks')['useToggle'] - const useTopBarText: typeof import('taro-hooks')['useTopBarText'] - const useUnmount: typeof import('taro-hooks')['useUnmount'] - const useUpdate: typeof import('taro-hooks')['useUpdate'] - const useUpdateEffect: typeof import('taro-hooks')['useUpdateEffect'] - const useUpdateManager: typeof import('taro-hooks')['useUpdateManager'] - const useUserInfo: typeof import('taro-hooks')['useUserInfo'] - const useVibrate: typeof import('taro-hooks')['useVibrate'] - const useVideo: typeof import('taro-hooks')['useVideo'] - const useVisible: typeof import('taro-hooks')['useVisible'] - const useWeRun: typeof import('taro-hooks')['useWeRun'] - const useWebp: typeof import('taro-hooks')['useWebp'] - const useWindowInfo: typeof import('taro-hooks')['useWindowInfo'] + const useAPICheck: (typeof import('taro-hooks'))['useAPICheck']; + const useAccountInfo: (typeof import('taro-hooks'))['useAccountInfo']; + const useActionSheet: (typeof import('taro-hooks'))['useActionSheet']; + const useAlertBeforeUnload: (typeof import('taro-hooks'))['useAlertBeforeUnload']; + const useApp: (typeof import('taro-hooks'))['useApp']; + const useArrayBuffer: (typeof import('taro-hooks'))['useArrayBuffer']; + const useAudio: (typeof import('taro-hooks'))['useAudio']; + const useAuthorize: (typeof import('taro-hooks'))['useAuthorize']; + const useBackground: (typeof import('taro-hooks'))['useBackground']; + const useBattery: (typeof import('taro-hooks'))['useBattery']; + const useBluetooth: (typeof import('taro-hooks'))['useBluetooth']; + const useBoolean: (typeof import('taro-hooks'))['useBoolean']; + const useBrightness: (typeof import('taro-hooks'))['useBrightness']; + const useCamera: (typeof import('taro-hooks'))['useCamera']; + const useChooseAddress: (typeof import('taro-hooks'))['useChooseAddress']; + const useClipboardData: (typeof import('taro-hooks'))['useClipboardData']; + const useCreation: (typeof import('taro-hooks'))['useCreation']; + const useDebounce: (typeof import('taro-hooks'))['useDebounce']; + const useDebounceFn: (typeof import('taro-hooks'))['useDebounceFn']; + const useDeviceInfo: (typeof import('taro-hooks'))['useDeviceInfo']; + const useEnterOptions: (typeof import('taro-hooks'))['useEnterOptions']; + const useEnv: (typeof import('taro-hooks'))['useEnv']; + const useEvent: (typeof import('taro-hooks'))['useEvent']; + const useFile: (typeof import('taro-hooks'))['useFile']; + const useFrom: (typeof import('taro-hooks'))['useFrom']; + const useImage: (typeof import('taro-hooks'))['useImage']; + const useInvoice: (typeof import('taro-hooks'))['useInvoice']; + const useKeyboard: (typeof import('taro-hooks'))['useKeyboard']; + const useLatest: (typeof import('taro-hooks'))['useLatest']; + const useLaunchOptions: (typeof import('taro-hooks'))['useLaunchOptions']; + const useLoading: (typeof import('taro-hooks'))['useLoading']; + const useLocation: (typeof import('taro-hooks'))['useLocation']; + const useLogin: (typeof import('taro-hooks'))['useLogin']; + const useManualPullDownRefresh: (typeof import('taro-hooks'))['useManualPullDownRefresh']; + const useMap: (typeof import('taro-hooks'))['useMap']; + const useMemoizedFn: (typeof import('taro-hooks'))['useMemoizedFn']; + const useMenuButtonBoundingClientRect: (typeof import('taro-hooks'))['useMenuButtonBoundingClientRect']; + const useModal: (typeof import('taro-hooks'))['useModal']; + const useMotion: (typeof import('taro-hooks'))['useMotion']; + const useMount: (typeof import('taro-hooks'))['useMount']; + const useNavigationBar: (typeof import('taro-hooks'))['useNavigationBar']; + const useNetworkType: (typeof import('taro-hooks'))['useNetworkType']; + const useOnline: (typeof import('taro-hooks'))['useOnline']; + const usePage: (typeof import('taro-hooks'))['usePage']; + const usePreload: (typeof import('taro-hooks'))['usePreload']; + const usePromise: (typeof import('taro-hooks'))['usePromise']; + const useRecord: (typeof import('taro-hooks'))['useRecord']; + const useRequest: (typeof import('taro-hooks'))['useRequest']; + const useRequestSubscribeMessage: (typeof import('taro-hooks'))['useRequestSubscribeMessage']; + const useRouter: (typeof import('taro-hooks'))['useRouter']; + const useScanCode: (typeof import('taro-hooks'))['useScanCode']; + const useSelectorQuery: (typeof import('taro-hooks'))['useSelectorQuery']; + const useStorage: (typeof import('taro-hooks'))['useStorage']; + const useSystemInfo: (typeof import('taro-hooks'))['useSystemInfo']; + const useTabBar: (typeof import('taro-hooks'))['useTabBar']; + const useThrottle: (typeof import('taro-hooks'))['useThrottle']; + const useThrottleFn: (typeof import('taro-hooks'))['useThrottleFn']; + const useToast: (typeof import('taro-hooks'))['useToast']; + const useToggle: (typeof import('taro-hooks'))['useToggle']; + const useTopBarText: (typeof import('taro-hooks'))['useTopBarText']; + const useUnmount: (typeof import('taro-hooks'))['useUnmount']; + const useUpdate: (typeof import('taro-hooks'))['useUpdate']; + const useUpdateEffect: (typeof import('taro-hooks'))['useUpdateEffect']; + const useUpdateManager: (typeof import('taro-hooks'))['useUpdateManager']; + const useUserInfo: (typeof import('taro-hooks'))['useUserInfo']; + const useVibrate: (typeof import('taro-hooks'))['useVibrate']; + const useVideo: (typeof import('taro-hooks'))['useVideo']; + const useVisible: (typeof import('taro-hooks'))['useVisible']; + const useWeRun: (typeof import('taro-hooks'))['useWeRun']; + const useWebp: (typeof import('taro-hooks'))['useWebp']; + const useWindowInfo: (typeof import('taro-hooks'))['useWindowInfo']; } diff --git a/src/common/components/QuestionDetail/QuestionDetail.tsx b/src/common/components/QuestionDetail/QuestionDetail.tsx index e3fc5dc..23b4fa5 100644 --- a/src/common/components/QuestionDetail/QuestionDetail.tsx +++ b/src/common/components/QuestionDetail/QuestionDetail.tsx @@ -1,11 +1,10 @@ import { Image, Text, View } from '@tarojs/components'; import React, { useEffect, useState } from 'react'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment +import answericon from '@/common/assets/img/publishQuestion/answer.png'; import askicon from '@/common/assets/img/publishQuestion/ask.png'; import PublishHeader from '@/common/components/PublishHeader/PublishHeader'; import { useCourseStore } from '@/pages/main/store/store'; -import answericon from '@/common/assets/img/publishQuestion/answer.png' - import IconFont from '../iconfont'; import './index.scss'; @@ -72,8 +71,6 @@ const QuestionDetail: React.FC = ({ question, answers }) => { const [questionDetail, setQuestion] = useState(question); const [answersDetail, setAnswers] = useState(answers); - - useEffect(() => { const fetchAllPublishers = async () => { // 函数,用于获取每个答案的用户信息 @@ -120,7 +117,7 @@ const QuestionDetail: React.FC = ({ question, answers }) => { }; void fetchAllPublishers(); - },[question,answers]); + }, [question, answers]); return ( @@ -138,36 +135,35 @@ const QuestionDetail: React.FC = ({ question, answers }) => { - {answersDetail && answersDetail.map((answer, index) => ( - - - - { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - - } - - {answer?.content} - - - - - - {/* */} + {answersDetail && + answersDetail.map((answer, index) => ( + + + + { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + + } + {answer?.content} - {answer.total_comment_count} - - - {/* */} + + + + {/* */} + + {answer.total_comment_count} + + + {/* */} + + {answer.total_support_count} - {answer.total_support_count} - - ))} + ))} ); diff --git a/src/common/components/QuestionListComponent/QuestionListComponent.tsx b/src/common/components/QuestionListComponent/QuestionListComponent.tsx index c9c1693..67216a3 100644 --- a/src/common/components/QuestionListComponent/QuestionListComponent.tsx +++ b/src/common/components/QuestionListComponent/QuestionListComponent.tsx @@ -1,11 +1,10 @@ -import { Image, View } from '@tarojs/components'; -import React, { useEffect, useState } from 'react'; +import answericon from '@/common/assets/img/publishQuestion/answer.png'; import askicon from '@/common/assets/img/publishQuestion/ask.png'; -import answericon from '@/common/assets/img/publishQuestion/answer.png' import PublishHeader from '@/common/components/PublishHeader/PublishHeader'; import { useCourseStore } from '@/pages/main/store/store'; +import { Image, View } from '@tarojs/components'; import Taro from '@tarojs/taro'; - +import React, { useEffect, useState } from 'react'; import './index.scss'; @@ -58,17 +57,18 @@ const QuestionListComponent: React.FC<{ question: IQuestion }> = ({ question }) const user = await dispatch.getPublishers(question.questioner_id); const questionWithUserInfo = { ...question, user }; setQuestion(questionWithUserInfo); - + // 检查 preview_answers 是否存在并且是一个数组 - const previewAnswersWithUserInfo = question.preview_answers && question.preview_answers.length > 0 - ? await Promise.all( - question.preview_answers.map(async (answer) => { - const user = await dispatch.getPublishers(answer.publisher_id); - return { ...answer, user }; - }) - ) - : []; - + const previewAnswersWithUserInfo = + question.preview_answers && question.preview_answers.length > 0 + ? await Promise.all( + question.preview_answers.map(async (answer) => { + const user = await dispatch.getPublishers(answer.publisher_id); + return { ...answer, user }; + }) + ) + : []; + // 更新问题状态,包括填充了用户信息的 preview_answers setQuestion((prev) => ({ ...prev, @@ -79,13 +79,13 @@ const QuestionListComponent: React.FC<{ question: IQuestion }> = ({ question }) console.error('Error fetching question with user info:', error); } }; - + void fetchQuestionWithUserInfo(); }, [question]); const handleQuestionDetailClick = () => { Taro.navigateTo({ - url: `/pages/questionInfo/index?id=${questionDetail.id}` + url: `/pages/questionInfo/index?id=${questionDetail.id}`, }); }; @@ -103,24 +103,23 @@ const QuestionListComponent: React.FC<{ question: IQuestion }> = ({ question }) - {questionDetail.preview_answers && questionDetail.preview_answers.map((answer, index) => ( - - - - - - {answer.content} + {questionDetail.preview_answers && + questionDetail.preview_answers.map((answer, index) => ( + + + + + {answer.content} - - ))} + ))} ); }; -export default QuestionListComponent; \ No newline at end of file +export default QuestionListComponent; diff --git a/src/pages/QuestionList/index.tsx b/src/pages/QuestionList/index.tsx index 232766d..e4c1614 100644 --- a/src/pages/QuestionList/index.tsx +++ b/src/pages/QuestionList/index.tsx @@ -1,105 +1,106 @@ // import React from 'react'; -import { View } from '@tarojs/components'; import { Course } from '@/common/assets/types'; -import { useState,useEffect } from 'react'; -import { get } from '@/common/utils/fetch'; import CourseInfo from '@/common/components/CourseInfo/CourseInfo'; import QuestionListComponent from '@/common/components/QuestionListComponent/QuestionListComponent'; +import { get } from '@/common/utils/fetch'; +import { View } from '@tarojs/components'; +import { useEffect, useState } from 'react'; interface IQuestion { + id: number; + questioner_id: number; + biz: string; + biz_id: number; + content: string; + answer_cnt: number; + preview_answers: Array<{ id: number; - questioner_id: number; - biz: string; - biz_id: number; + publisher_id: number; + question_id: number; content: string; - answer_cnt: number; - preview_answers: Array<{ - id: number; - publisher_id: number; - question_id: number; - content: string; - utime: number; - ctime: number; - }>; utime: number; ctime: number; - } + }>; + utime: number; + ctime: number; +} const App = () => { -// const questions = [ -// { -// "id": 5, -// "questioner_id": 5208, -// "biz": "Course", -// "biz_id": 2347, -// "content": "这节课怎么样?", -// "answer_cnt": 0, -// "preview_answers": [ -// { -// "id": 5, -// "publisher_id": 5208, -// "question_id": 5, -// "content": "我觉得很不错", -// "utime": 1725039834700, -// "ctime": 1725039834700 -// } -// ], -// "utime": 1725039765090, -// "ctime": 1725039765090 -// } -// ]; - + // const questions = [ + // { + // "id": 5, + // "questioner_id": 5208, + // "biz": "Course", + // "biz_id": 2347, + // "content": "这节课怎么样?", + // "answer_cnt": 0, + // "preview_answers": [ + // { + // "id": 5, + // "publisher_id": 5208, + // "question_id": 5, + // "content": "我觉得很不错", + // "utime": 1725039834700, + // "ctime": 1725039834700 + // } + // ], + // "utime": 1725039765090, + // "ctime": 1725039765090 + // } + // ]; const [course, setCourse] = useState(null); const [questions, setQuestions] = useState(null); const courseId = 2347; //先用概率统计A来调试吧 - useEffect(()=>{ + useEffect(() => { // eslint-disable-next-line @typescript-eslint/require-await const getCourseData = async () => { - try { - void get(`/courses/${courseId}/detail`, true).then((res) => { - console.log(res); - // 检查 res 是否有 data 属性,并且断言其类型 - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - setCourse(res?.data as Course); - }); - } catch (error) { - // 错误处理,例如弹出提示 - console.error('Failed to fetch course data:', error); - } - }; - - if (courseId) void getCourseData().then((r) => console.log(r)); + try { + void get(`/courses/${courseId}/detail`, true).then((res) => { + console.log(res); + // 检查 res 是否有 data 属性,并且断言其类型 + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + setCourse(res?.data as Course); + }); + } catch (error) { + // 错误处理,例如弹出提示 + console.error('Failed to fetch course data:', error); + } + }; - // eslint-disable-next-line @typescript-eslint/require-await - const getQuestionList = async () => { - try { - void get(`/questions/list?biz=Course&biz_id=${courseId}&cur_question_id=0&limit=100`, true).then((res) => { - console.log(res); - // 检查 res 是否有 data 属性,并且断言其类型 - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - setQuestions(res?.data as IQuestion[]); - }); - } catch (error) { - // 错误处理,例如弹出提示 - console.error('Failed to fetch course data:', error); - } - }; - - if (courseId) void getQuestionList().then((r) => console.log(r)); + if (courseId) void getCourseData().then((r) => console.log(r)); - },[courseId]) + // eslint-disable-next-line @typescript-eslint/require-await + const getQuestionList = async () => { + try { + void get( + `/questions/list?biz=Course&biz_id=${courseId}&cur_question_id=0&limit=100`, + true + ).then((res) => { + console.log(res); + // 检查 res 是否有 data 属性,并且断言其类型 + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + setQuestions(res?.data as IQuestion[]); + }); + } catch (error) { + // 错误处理,例如弹出提示 + console.error('Failed to fetch course data:', error); + } + }; + if (courseId) void getQuestionList().then((r) => console.log(r)); + }, [courseId]); return ( - {questions!==null && questions.map((question, index) => ( - - ))} + {questions !== null && + questions.map((question, index) => ( + + ))} ); }; -export default App; \ No newline at end of file +export default App; diff --git a/src/pages/questionInfo/index.tsx b/src/pages/questionInfo/index.tsx index b9f40db..677685a 100644 --- a/src/pages/questionInfo/index.tsx +++ b/src/pages/questionInfo/index.tsx @@ -3,8 +3,8 @@ import CourseInfo from '@/common/components/CourseInfo/CourseInfo'; import QuestionDetail from '@/common/components/QuestionDetail/QuestionDetail'; // 假设你的组件文件名为QuestionDetail.tsx import { get } from '@/common/utils/fetch'; import { View } from '@tarojs/components'; -import React, { useEffect, useState } from 'react'; import Taro from '@tarojs/taro'; +import React, { useEffect, useState } from 'react'; interface IQuestion { id: number; @@ -68,16 +68,14 @@ const Index: React.FC = () => { const [course, setCourse] = useState(null); - const [question,setQuestion] = useState(null); - - const [answers,setAnswers] = useState(null); + const [question, setQuestion] = useState(null); - + const [answers, setAnswers] = useState(null); const courseId = 2347; //先用概率统计A来调试吧 - const [questionId,setQuestionId] = useState(null); + const [questionId, setQuestionId] = useState(null); - // const questionId = 5; + // const questionId = 5; useEffect(() => { const getParams = () => { @@ -125,11 +123,14 @@ const Index: React.FC = () => { }; if (courseId) void getQuestionDetail().then((r) => console.log(r)); - + // eslint-disable-next-line @typescript-eslint/require-await const getAnswersList = async () => { try { - void get(`/answers/list/questions/${questionId}?cur_answer_id=0&limit=100`, true).then((res) => { + void get( + `/answers/list/questions/${questionId}?cur_answer_id=0&limit=100`, + true + ).then((res) => { console.log(res); // 检查 res 是否有 data 属性,并且断言其类型 // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access @@ -142,18 +143,12 @@ const Index: React.FC = () => { }; if (courseId) void getAnswersList().then((r) => console.log(r)); - - }, [courseId,questionId]); // 在courseId变化时运行 + }, [courseId, questionId]); // 在courseId变化时运行 return ( - { - question ? - - : '' - } - + {question ? : ''} ); }; From 4a59779489cfae70a20d2f66724ed8d5927b1f5a Mon Sep 17 00:00:00 2001 From: MaggieMii <1350383261@qq.com> Date: Wed, 11 Sep 2024 18:07:29 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=F0=9F=8C=88=20style:=20eslint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app.config.ts | 2 +- .../QuestionListComponent.tsx | 26 ++++++++++++------- src/pages/QuestionList/index.tsx | 5 ++-- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/app.config.ts b/src/app.config.ts index 6b690fe..f06cd1d 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -1,6 +1,6 @@ export default defineAppConfig({ pages: [ - 'pages/QuestionList/index', + 'pages/questionlist/index', 'pages/questionInfo/index', 'pages/login/index', 'pages/main/index', diff --git a/src/common/components/QuestionListComponent/QuestionListComponent.tsx b/src/common/components/QuestionListComponent/QuestionListComponent.tsx index 67216a3..bac6b8a 100644 --- a/src/common/components/QuestionListComponent/QuestionListComponent.tsx +++ b/src/common/components/QuestionListComponent/QuestionListComponent.tsx @@ -1,13 +1,15 @@ -import answericon from '@/common/assets/img/publishQuestion/answer.png'; -import askicon from '@/common/assets/img/publishQuestion/ask.png'; -import PublishHeader from '@/common/components/PublishHeader/PublishHeader'; -import { useCourseStore } from '@/pages/main/store/store'; +/* eslint-disable import/first */ import { Image, View } from '@tarojs/components'; import Taro from '@tarojs/taro'; import React, { useEffect, useState } from 'react'; import './index.scss'; +import answericon from '@/common/assets/img/publishQuestion/answer.png'; +import askicon from '@/common/assets/img/publishQuestion/ask.png'; +import PublishHeader from '@/common/components/PublishHeader/PublishHeader'; +import { useCourseStore } from '@/pages/main/store/store'; + interface IUser { avatar: string; id: number; @@ -63,8 +65,8 @@ const QuestionListComponent: React.FC<{ question: IQuestion }> = ({ question }) question.preview_answers && question.preview_answers.length > 0 ? await Promise.all( question.preview_answers.map(async (answer) => { - const user = await dispatch.getPublishers(answer.publisher_id); - return { ...answer, user }; + const newuser = await dispatch.getPublishers(answer.publisher_id); + return { ...answer, newuser }; }) ) : []; @@ -84,7 +86,7 @@ const QuestionListComponent: React.FC<{ question: IQuestion }> = ({ question }) }, [question]); const handleQuestionDetailClick = () => { - Taro.navigateTo({ + void Taro.navigateTo({ url: `/pages/questionInfo/index?id=${questionDetail.id}`, }); }; @@ -98,7 +100,10 @@ const QuestionListComponent: React.FC<{ question: IQuestion }> = ({ question }) date={formatTime(questionDetail?.ctime)} /> - + { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + + } {questionDetail.content} @@ -112,7 +117,10 @@ const QuestionListComponent: React.FC<{ question: IQuestion }> = ({ question }) date={formatTime(answer.ctime)} /> - + { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + + } {answer.content} diff --git a/src/pages/QuestionList/index.tsx b/src/pages/QuestionList/index.tsx index e4c1614..ce8fc8e 100644 --- a/src/pages/QuestionList/index.tsx +++ b/src/pages/QuestionList/index.tsx @@ -1,10 +1,11 @@ // import React from 'react'; +import { View } from '@tarojs/components'; +import { useEffect, useState } from 'react'; + import { Course } from '@/common/assets/types'; import CourseInfo from '@/common/components/CourseInfo/CourseInfo'; import QuestionListComponent from '@/common/components/QuestionListComponent/QuestionListComponent'; import { get } from '@/common/utils/fetch'; -import { View } from '@tarojs/components'; -import { useEffect, useState } from 'react'; interface IQuestion { id: number; From 1738597b43e45f630f7cfc167eeeb2cef19402bc Mon Sep 17 00:00:00 2001 From: MaggieMii <1350383261@qq.com> Date: Wed, 11 Sep 2024 18:11:32 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=F0=9F=90=9E=20fix:=20build=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/auto-imports.d.ts | 144 +++++++++++++++++++++--------------------- 1 file changed, 72 insertions(+), 72 deletions(-) diff --git a/src/auto-imports.d.ts b/src/auto-imports.d.ts index 985f2e1..28514c4 100644 --- a/src/auto-imports.d.ts +++ b/src/auto-imports.d.ts @@ -3,77 +3,77 @@ // @ts-nocheck // noinspection JSUnusedGlobalSymbols // Generated by unplugin-auto-import -export { } +export {} declare global { - const useAPICheck: (typeof import('taro-hooks'))['useAPICheck']; - const useAccountInfo: (typeof import('taro-hooks'))['useAccountInfo']; - const useActionSheet: (typeof import('taro-hooks'))['useActionSheet']; - const useAlertBeforeUnload: (typeof import('taro-hooks'))['useAlertBeforeUnload']; - const useApp: (typeof import('taro-hooks'))['useApp']; - const useArrayBuffer: (typeof import('taro-hooks'))['useArrayBuffer']; - const useAudio: (typeof import('taro-hooks'))['useAudio']; - const useAuthorize: (typeof import('taro-hooks'))['useAuthorize']; - const useBackground: (typeof import('taro-hooks'))['useBackground']; - const useBattery: (typeof import('taro-hooks'))['useBattery']; - const useBluetooth: (typeof import('taro-hooks'))['useBluetooth']; - const useBoolean: (typeof import('taro-hooks'))['useBoolean']; - const useBrightness: (typeof import('taro-hooks'))['useBrightness']; - const useCamera: (typeof import('taro-hooks'))['useCamera']; - const useChooseAddress: (typeof import('taro-hooks'))['useChooseAddress']; - const useClipboardData: (typeof import('taro-hooks'))['useClipboardData']; - const useCreation: (typeof import('taro-hooks'))['useCreation']; - const useDebounce: (typeof import('taro-hooks'))['useDebounce']; - const useDebounceFn: (typeof import('taro-hooks'))['useDebounceFn']; - const useDeviceInfo: (typeof import('taro-hooks'))['useDeviceInfo']; - const useEnterOptions: (typeof import('taro-hooks'))['useEnterOptions']; - const useEnv: (typeof import('taro-hooks'))['useEnv']; - const useEvent: (typeof import('taro-hooks'))['useEvent']; - const useFile: (typeof import('taro-hooks'))['useFile']; - const useFrom: (typeof import('taro-hooks'))['useFrom']; - const useImage: (typeof import('taro-hooks'))['useImage']; - const useInvoice: (typeof import('taro-hooks'))['useInvoice']; - const useKeyboard: (typeof import('taro-hooks'))['useKeyboard']; - const useLatest: (typeof import('taro-hooks'))['useLatest']; - const useLaunchOptions: (typeof import('taro-hooks'))['useLaunchOptions']; - const useLoading: (typeof import('taro-hooks'))['useLoading']; - const useLocation: (typeof import('taro-hooks'))['useLocation']; - const useLogin: (typeof import('taro-hooks'))['useLogin']; - const useManualPullDownRefresh: (typeof import('taro-hooks'))['useManualPullDownRefresh']; - const useMap: (typeof import('taro-hooks'))['useMap']; - const useMemoizedFn: (typeof import('taro-hooks'))['useMemoizedFn']; - const useMenuButtonBoundingClientRect: (typeof import('taro-hooks'))['useMenuButtonBoundingClientRect']; - const useModal: (typeof import('taro-hooks'))['useModal']; - const useMotion: (typeof import('taro-hooks'))['useMotion']; - const useMount: (typeof import('taro-hooks'))['useMount']; - const useNavigationBar: (typeof import('taro-hooks'))['useNavigationBar']; - const useNetworkType: (typeof import('taro-hooks'))['useNetworkType']; - const useOnline: (typeof import('taro-hooks'))['useOnline']; - const usePage: (typeof import('taro-hooks'))['usePage']; - const usePreload: (typeof import('taro-hooks'))['usePreload']; - const usePromise: (typeof import('taro-hooks'))['usePromise']; - const useRecord: (typeof import('taro-hooks'))['useRecord']; - const useRequest: (typeof import('taro-hooks'))['useRequest']; - const useRequestSubscribeMessage: (typeof import('taro-hooks'))['useRequestSubscribeMessage']; - const useRouter: (typeof import('taro-hooks'))['useRouter']; - const useScanCode: (typeof import('taro-hooks'))['useScanCode']; - const useSelectorQuery: (typeof import('taro-hooks'))['useSelectorQuery']; - const useStorage: (typeof import('taro-hooks'))['useStorage']; - const useSystemInfo: (typeof import('taro-hooks'))['useSystemInfo']; - const useTabBar: (typeof import('taro-hooks'))['useTabBar']; - const useThrottle: (typeof import('taro-hooks'))['useThrottle']; - const useThrottleFn: (typeof import('taro-hooks'))['useThrottleFn']; - const useToast: (typeof import('taro-hooks'))['useToast']; - const useToggle: (typeof import('taro-hooks'))['useToggle']; - const useTopBarText: (typeof import('taro-hooks'))['useTopBarText']; - const useUnmount: (typeof import('taro-hooks'))['useUnmount']; - const useUpdate: (typeof import('taro-hooks'))['useUpdate']; - const useUpdateEffect: (typeof import('taro-hooks'))['useUpdateEffect']; - const useUpdateManager: (typeof import('taro-hooks'))['useUpdateManager']; - const useUserInfo: (typeof import('taro-hooks'))['useUserInfo']; - const useVibrate: (typeof import('taro-hooks'))['useVibrate']; - const useVideo: (typeof import('taro-hooks'))['useVideo']; - const useVisible: (typeof import('taro-hooks'))['useVisible']; - const useWeRun: (typeof import('taro-hooks'))['useWeRun']; - const useWebp: (typeof import('taro-hooks'))['useWebp']; - const useWindowInfo: (typeof import('taro-hooks'))['useWindowInfo']; + const useAPICheck: typeof import('taro-hooks')['useAPICheck'] + const useAccountInfo: typeof import('taro-hooks')['useAccountInfo'] + const useActionSheet: typeof import('taro-hooks')['useActionSheet'] + const useAlertBeforeUnload: typeof import('taro-hooks')['useAlertBeforeUnload'] + const useApp: typeof import('taro-hooks')['useApp'] + const useArrayBuffer: typeof import('taro-hooks')['useArrayBuffer'] + const useAudio: typeof import('taro-hooks')['useAudio'] + const useAuthorize: typeof import('taro-hooks')['useAuthorize'] + const useBackground: typeof import('taro-hooks')['useBackground'] + const useBattery: typeof import('taro-hooks')['useBattery'] + const useBluetooth: typeof import('taro-hooks')['useBluetooth'] + const useBoolean: typeof import('taro-hooks')['useBoolean'] + const useBrightness: typeof import('taro-hooks')['useBrightness'] + const useCamera: typeof import('taro-hooks')['useCamera'] + const useChooseAddress: typeof import('taro-hooks')['useChooseAddress'] + const useClipboardData: typeof import('taro-hooks')['useClipboardData'] + const useCreation: typeof import('taro-hooks')['useCreation'] + const useDebounce: typeof import('taro-hooks')['useDebounce'] + const useDebounceFn: typeof import('taro-hooks')['useDebounceFn'] + const useDeviceInfo: typeof import('taro-hooks')['useDeviceInfo'] + const useEnterOptions: typeof import('taro-hooks')['useEnterOptions'] + const useEnv: typeof import('taro-hooks')['useEnv'] + const useEvent: typeof import('taro-hooks')['useEvent'] + const useFile: typeof import('taro-hooks')['useFile'] + const useFrom: typeof import('taro-hooks')['useFrom'] + const useImage: typeof import('taro-hooks')['useImage'] + const useInvoice: typeof import('taro-hooks')['useInvoice'] + const useKeyboard: typeof import('taro-hooks')['useKeyboard'] + const useLatest: typeof import('taro-hooks')['useLatest'] + const useLaunchOptions: typeof import('taro-hooks')['useLaunchOptions'] + const useLoading: typeof import('taro-hooks')['useLoading'] + const useLocation: typeof import('taro-hooks')['useLocation'] + const useLogin: typeof import('taro-hooks')['useLogin'] + const useManualPullDownRefresh: typeof import('taro-hooks')['useManualPullDownRefresh'] + const useMap: typeof import('taro-hooks')['useMap'] + const useMemoizedFn: typeof import('taro-hooks')['useMemoizedFn'] + const useMenuButtonBoundingClientRect: typeof import('taro-hooks')['useMenuButtonBoundingClientRect'] + const useModal: typeof import('taro-hooks')['useModal'] + const useMotion: typeof import('taro-hooks')['useMotion'] + const useMount: typeof import('taro-hooks')['useMount'] + const useNavigationBar: typeof import('taro-hooks')['useNavigationBar'] + const useNetworkType: typeof import('taro-hooks')['useNetworkType'] + const useOnline: typeof import('taro-hooks')['useOnline'] + const usePage: typeof import('taro-hooks')['usePage'] + const usePreload: typeof import('taro-hooks')['usePreload'] + const usePromise: typeof import('taro-hooks')['usePromise'] + const useRecord: typeof import('taro-hooks')['useRecord'] + const useRequest: typeof import('taro-hooks')['useRequest'] + const useRequestSubscribeMessage: typeof import('taro-hooks')['useRequestSubscribeMessage'] + const useRouter: typeof import('taro-hooks')['useRouter'] + const useScanCode: typeof import('taro-hooks')['useScanCode'] + const useSelectorQuery: typeof import('taro-hooks')['useSelectorQuery'] + const useStorage: typeof import('taro-hooks')['useStorage'] + const useSystemInfo: typeof import('taro-hooks')['useSystemInfo'] + const useTabBar: typeof import('taro-hooks')['useTabBar'] + const useThrottle: typeof import('taro-hooks')['useThrottle'] + const useThrottleFn: typeof import('taro-hooks')['useThrottleFn'] + const useToast: typeof import('taro-hooks')['useToast'] + const useToggle: typeof import('taro-hooks')['useToggle'] + const useTopBarText: typeof import('taro-hooks')['useTopBarText'] + const useUnmount: typeof import('taro-hooks')['useUnmount'] + const useUpdate: typeof import('taro-hooks')['useUpdate'] + const useUpdateEffect: typeof import('taro-hooks')['useUpdateEffect'] + const useUpdateManager: typeof import('taro-hooks')['useUpdateManager'] + const useUserInfo: typeof import('taro-hooks')['useUserInfo'] + const useVibrate: typeof import('taro-hooks')['useVibrate'] + const useVideo: typeof import('taro-hooks')['useVideo'] + const useVisible: typeof import('taro-hooks')['useVisible'] + const useWeRun: typeof import('taro-hooks')['useWeRun'] + const useWebp: typeof import('taro-hooks')['useWebp'] + const useWindowInfo: typeof import('taro-hooks')['useWindowInfo'] } From 5dd997fc896304e130faebdd1eee465ef2355060 Mon Sep 17 00:00:00 2001 From: MaggieMii <1350383261@qq.com> Date: Wed, 11 Sep 2024 18:22:34 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=F0=9F=90=9E=20fix:=20build=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app.config.ts | 2 +- src/pages/QuestionList/index.tsx | 22 ------- src/pages/questionList/index.config.ts | 4 ++ src/pages/questionList/index.scss | 0 src/pages/questionList/index.tsx | 85 ++++++++++++++++++++++++++ 5 files changed, 90 insertions(+), 23 deletions(-) create mode 100644 src/pages/questionList/index.config.ts create mode 100644 src/pages/questionList/index.scss create mode 100644 src/pages/questionList/index.tsx diff --git a/src/app.config.ts b/src/app.config.ts index f06cd1d..fa2666e 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -1,6 +1,6 @@ export default defineAppConfig({ pages: [ - 'pages/questionlist/index', + 'pages/questionList/index', 'pages/questionInfo/index', 'pages/login/index', 'pages/main/index', diff --git a/src/pages/QuestionList/index.tsx b/src/pages/QuestionList/index.tsx index ce8fc8e..eea3ef1 100644 --- a/src/pages/QuestionList/index.tsx +++ b/src/pages/QuestionList/index.tsx @@ -27,28 +27,6 @@ interface IQuestion { } const App = () => { - // const questions = [ - // { - // "id": 5, - // "questioner_id": 5208, - // "biz": "Course", - // "biz_id": 2347, - // "content": "这节课怎么样?", - // "answer_cnt": 0, - // "preview_answers": [ - // { - // "id": 5, - // "publisher_id": 5208, - // "question_id": 5, - // "content": "我觉得很不错", - // "utime": 1725039834700, - // "ctime": 1725039834700 - // } - // ], - // "utime": 1725039765090, - // "ctime": 1725039765090 - // } - // ]; const [course, setCourse] = useState(null); const [questions, setQuestions] = useState(null); diff --git a/src/pages/questionList/index.config.ts b/src/pages/questionList/index.config.ts new file mode 100644 index 0000000..fd01a30 --- /dev/null +++ b/src/pages/questionList/index.config.ts @@ -0,0 +1,4 @@ +export default definePageConfig({ + navigationBarTitleText: '问问同学', + navigationBarBackgroundColor: '#F9F9F2', +}); diff --git a/src/pages/questionList/index.scss b/src/pages/questionList/index.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/questionList/index.tsx b/src/pages/questionList/index.tsx new file mode 100644 index 0000000..eea3ef1 --- /dev/null +++ b/src/pages/questionList/index.tsx @@ -0,0 +1,85 @@ +// import React from 'react'; +import { View } from '@tarojs/components'; +import { useEffect, useState } from 'react'; + +import { Course } from '@/common/assets/types'; +import CourseInfo from '@/common/components/CourseInfo/CourseInfo'; +import QuestionListComponent from '@/common/components/QuestionListComponent/QuestionListComponent'; +import { get } from '@/common/utils/fetch'; + +interface IQuestion { + id: number; + questioner_id: number; + biz: string; + biz_id: number; + content: string; + answer_cnt: number; + preview_answers: Array<{ + id: number; + publisher_id: number; + question_id: number; + content: string; + utime: number; + ctime: number; + }>; + utime: number; + ctime: number; +} + +const App = () => { + + const [course, setCourse] = useState(null); + const [questions, setQuestions] = useState(null); + const courseId = 2347; //先用概率统计A来调试吧 + + useEffect(() => { + // eslint-disable-next-line @typescript-eslint/require-await + const getCourseData = async () => { + try { + void get(`/courses/${courseId}/detail`, true).then((res) => { + console.log(res); + // 检查 res 是否有 data 属性,并且断言其类型 + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + setCourse(res?.data as Course); + }); + } catch (error) { + // 错误处理,例如弹出提示 + console.error('Failed to fetch course data:', error); + } + }; + + if (courseId) void getCourseData().then((r) => console.log(r)); + + // eslint-disable-next-line @typescript-eslint/require-await + const getQuestionList = async () => { + try { + void get( + `/questions/list?biz=Course&biz_id=${courseId}&cur_question_id=0&limit=100`, + true + ).then((res) => { + console.log(res); + // 检查 res 是否有 data 属性,并且断言其类型 + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + setQuestions(res?.data as IQuestion[]); + }); + } catch (error) { + // 错误处理,例如弹出提示 + console.error('Failed to fetch course data:', error); + } + }; + + if (courseId) void getQuestionList().then((r) => console.log(r)); + }, [courseId]); + + return ( + + + {questions !== null && + questions.map((question, index) => ( + + ))} + + ); +}; + +export default App; From 69f14d51e178b1e226fcecc6eded1bcc5ab486fb Mon Sep 17 00:00:00 2001 From: MaggieMii <1350383261@qq.com> Date: Wed, 11 Sep 2024 18:25:42 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=F0=9F=8C=88=20style:=20prettier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/auto-imports.d.ts | 144 +++++++++++++++---------------- src/pages/QuestionList/index.tsx | 1 - src/pages/questionList/index.tsx | 1 - 3 files changed, 72 insertions(+), 74 deletions(-) diff --git a/src/auto-imports.d.ts b/src/auto-imports.d.ts index 28514c4..985f2e1 100644 --- a/src/auto-imports.d.ts +++ b/src/auto-imports.d.ts @@ -3,77 +3,77 @@ // @ts-nocheck // noinspection JSUnusedGlobalSymbols // Generated by unplugin-auto-import -export {} +export { } declare global { - const useAPICheck: typeof import('taro-hooks')['useAPICheck'] - const useAccountInfo: typeof import('taro-hooks')['useAccountInfo'] - const useActionSheet: typeof import('taro-hooks')['useActionSheet'] - const useAlertBeforeUnload: typeof import('taro-hooks')['useAlertBeforeUnload'] - const useApp: typeof import('taro-hooks')['useApp'] - const useArrayBuffer: typeof import('taro-hooks')['useArrayBuffer'] - const useAudio: typeof import('taro-hooks')['useAudio'] - const useAuthorize: typeof import('taro-hooks')['useAuthorize'] - const useBackground: typeof import('taro-hooks')['useBackground'] - const useBattery: typeof import('taro-hooks')['useBattery'] - const useBluetooth: typeof import('taro-hooks')['useBluetooth'] - const useBoolean: typeof import('taro-hooks')['useBoolean'] - const useBrightness: typeof import('taro-hooks')['useBrightness'] - const useCamera: typeof import('taro-hooks')['useCamera'] - const useChooseAddress: typeof import('taro-hooks')['useChooseAddress'] - const useClipboardData: typeof import('taro-hooks')['useClipboardData'] - const useCreation: typeof import('taro-hooks')['useCreation'] - const useDebounce: typeof import('taro-hooks')['useDebounce'] - const useDebounceFn: typeof import('taro-hooks')['useDebounceFn'] - const useDeviceInfo: typeof import('taro-hooks')['useDeviceInfo'] - const useEnterOptions: typeof import('taro-hooks')['useEnterOptions'] - const useEnv: typeof import('taro-hooks')['useEnv'] - const useEvent: typeof import('taro-hooks')['useEvent'] - const useFile: typeof import('taro-hooks')['useFile'] - const useFrom: typeof import('taro-hooks')['useFrom'] - const useImage: typeof import('taro-hooks')['useImage'] - const useInvoice: typeof import('taro-hooks')['useInvoice'] - const useKeyboard: typeof import('taro-hooks')['useKeyboard'] - const useLatest: typeof import('taro-hooks')['useLatest'] - const useLaunchOptions: typeof import('taro-hooks')['useLaunchOptions'] - const useLoading: typeof import('taro-hooks')['useLoading'] - const useLocation: typeof import('taro-hooks')['useLocation'] - const useLogin: typeof import('taro-hooks')['useLogin'] - const useManualPullDownRefresh: typeof import('taro-hooks')['useManualPullDownRefresh'] - const useMap: typeof import('taro-hooks')['useMap'] - const useMemoizedFn: typeof import('taro-hooks')['useMemoizedFn'] - const useMenuButtonBoundingClientRect: typeof import('taro-hooks')['useMenuButtonBoundingClientRect'] - const useModal: typeof import('taro-hooks')['useModal'] - const useMotion: typeof import('taro-hooks')['useMotion'] - const useMount: typeof import('taro-hooks')['useMount'] - const useNavigationBar: typeof import('taro-hooks')['useNavigationBar'] - const useNetworkType: typeof import('taro-hooks')['useNetworkType'] - const useOnline: typeof import('taro-hooks')['useOnline'] - const usePage: typeof import('taro-hooks')['usePage'] - const usePreload: typeof import('taro-hooks')['usePreload'] - const usePromise: typeof import('taro-hooks')['usePromise'] - const useRecord: typeof import('taro-hooks')['useRecord'] - const useRequest: typeof import('taro-hooks')['useRequest'] - const useRequestSubscribeMessage: typeof import('taro-hooks')['useRequestSubscribeMessage'] - const useRouter: typeof import('taro-hooks')['useRouter'] - const useScanCode: typeof import('taro-hooks')['useScanCode'] - const useSelectorQuery: typeof import('taro-hooks')['useSelectorQuery'] - const useStorage: typeof import('taro-hooks')['useStorage'] - const useSystemInfo: typeof import('taro-hooks')['useSystemInfo'] - const useTabBar: typeof import('taro-hooks')['useTabBar'] - const useThrottle: typeof import('taro-hooks')['useThrottle'] - const useThrottleFn: typeof import('taro-hooks')['useThrottleFn'] - const useToast: typeof import('taro-hooks')['useToast'] - const useToggle: typeof import('taro-hooks')['useToggle'] - const useTopBarText: typeof import('taro-hooks')['useTopBarText'] - const useUnmount: typeof import('taro-hooks')['useUnmount'] - const useUpdate: typeof import('taro-hooks')['useUpdate'] - const useUpdateEffect: typeof import('taro-hooks')['useUpdateEffect'] - const useUpdateManager: typeof import('taro-hooks')['useUpdateManager'] - const useUserInfo: typeof import('taro-hooks')['useUserInfo'] - const useVibrate: typeof import('taro-hooks')['useVibrate'] - const useVideo: typeof import('taro-hooks')['useVideo'] - const useVisible: typeof import('taro-hooks')['useVisible'] - const useWeRun: typeof import('taro-hooks')['useWeRun'] - const useWebp: typeof import('taro-hooks')['useWebp'] - const useWindowInfo: typeof import('taro-hooks')['useWindowInfo'] + const useAPICheck: (typeof import('taro-hooks'))['useAPICheck']; + const useAccountInfo: (typeof import('taro-hooks'))['useAccountInfo']; + const useActionSheet: (typeof import('taro-hooks'))['useActionSheet']; + const useAlertBeforeUnload: (typeof import('taro-hooks'))['useAlertBeforeUnload']; + const useApp: (typeof import('taro-hooks'))['useApp']; + const useArrayBuffer: (typeof import('taro-hooks'))['useArrayBuffer']; + const useAudio: (typeof import('taro-hooks'))['useAudio']; + const useAuthorize: (typeof import('taro-hooks'))['useAuthorize']; + const useBackground: (typeof import('taro-hooks'))['useBackground']; + const useBattery: (typeof import('taro-hooks'))['useBattery']; + const useBluetooth: (typeof import('taro-hooks'))['useBluetooth']; + const useBoolean: (typeof import('taro-hooks'))['useBoolean']; + const useBrightness: (typeof import('taro-hooks'))['useBrightness']; + const useCamera: (typeof import('taro-hooks'))['useCamera']; + const useChooseAddress: (typeof import('taro-hooks'))['useChooseAddress']; + const useClipboardData: (typeof import('taro-hooks'))['useClipboardData']; + const useCreation: (typeof import('taro-hooks'))['useCreation']; + const useDebounce: (typeof import('taro-hooks'))['useDebounce']; + const useDebounceFn: (typeof import('taro-hooks'))['useDebounceFn']; + const useDeviceInfo: (typeof import('taro-hooks'))['useDeviceInfo']; + const useEnterOptions: (typeof import('taro-hooks'))['useEnterOptions']; + const useEnv: (typeof import('taro-hooks'))['useEnv']; + const useEvent: (typeof import('taro-hooks'))['useEvent']; + const useFile: (typeof import('taro-hooks'))['useFile']; + const useFrom: (typeof import('taro-hooks'))['useFrom']; + const useImage: (typeof import('taro-hooks'))['useImage']; + const useInvoice: (typeof import('taro-hooks'))['useInvoice']; + const useKeyboard: (typeof import('taro-hooks'))['useKeyboard']; + const useLatest: (typeof import('taro-hooks'))['useLatest']; + const useLaunchOptions: (typeof import('taro-hooks'))['useLaunchOptions']; + const useLoading: (typeof import('taro-hooks'))['useLoading']; + const useLocation: (typeof import('taro-hooks'))['useLocation']; + const useLogin: (typeof import('taro-hooks'))['useLogin']; + const useManualPullDownRefresh: (typeof import('taro-hooks'))['useManualPullDownRefresh']; + const useMap: (typeof import('taro-hooks'))['useMap']; + const useMemoizedFn: (typeof import('taro-hooks'))['useMemoizedFn']; + const useMenuButtonBoundingClientRect: (typeof import('taro-hooks'))['useMenuButtonBoundingClientRect']; + const useModal: (typeof import('taro-hooks'))['useModal']; + const useMotion: (typeof import('taro-hooks'))['useMotion']; + const useMount: (typeof import('taro-hooks'))['useMount']; + const useNavigationBar: (typeof import('taro-hooks'))['useNavigationBar']; + const useNetworkType: (typeof import('taro-hooks'))['useNetworkType']; + const useOnline: (typeof import('taro-hooks'))['useOnline']; + const usePage: (typeof import('taro-hooks'))['usePage']; + const usePreload: (typeof import('taro-hooks'))['usePreload']; + const usePromise: (typeof import('taro-hooks'))['usePromise']; + const useRecord: (typeof import('taro-hooks'))['useRecord']; + const useRequest: (typeof import('taro-hooks'))['useRequest']; + const useRequestSubscribeMessage: (typeof import('taro-hooks'))['useRequestSubscribeMessage']; + const useRouter: (typeof import('taro-hooks'))['useRouter']; + const useScanCode: (typeof import('taro-hooks'))['useScanCode']; + const useSelectorQuery: (typeof import('taro-hooks'))['useSelectorQuery']; + const useStorage: (typeof import('taro-hooks'))['useStorage']; + const useSystemInfo: (typeof import('taro-hooks'))['useSystemInfo']; + const useTabBar: (typeof import('taro-hooks'))['useTabBar']; + const useThrottle: (typeof import('taro-hooks'))['useThrottle']; + const useThrottleFn: (typeof import('taro-hooks'))['useThrottleFn']; + const useToast: (typeof import('taro-hooks'))['useToast']; + const useToggle: (typeof import('taro-hooks'))['useToggle']; + const useTopBarText: (typeof import('taro-hooks'))['useTopBarText']; + const useUnmount: (typeof import('taro-hooks'))['useUnmount']; + const useUpdate: (typeof import('taro-hooks'))['useUpdate']; + const useUpdateEffect: (typeof import('taro-hooks'))['useUpdateEffect']; + const useUpdateManager: (typeof import('taro-hooks'))['useUpdateManager']; + const useUserInfo: (typeof import('taro-hooks'))['useUserInfo']; + const useVibrate: (typeof import('taro-hooks'))['useVibrate']; + const useVideo: (typeof import('taro-hooks'))['useVideo']; + const useVisible: (typeof import('taro-hooks'))['useVisible']; + const useWeRun: (typeof import('taro-hooks'))['useWeRun']; + const useWebp: (typeof import('taro-hooks'))['useWebp']; + const useWindowInfo: (typeof import('taro-hooks'))['useWindowInfo']; } diff --git a/src/pages/QuestionList/index.tsx b/src/pages/QuestionList/index.tsx index eea3ef1..5103fda 100644 --- a/src/pages/QuestionList/index.tsx +++ b/src/pages/QuestionList/index.tsx @@ -27,7 +27,6 @@ interface IQuestion { } const App = () => { - const [course, setCourse] = useState(null); const [questions, setQuestions] = useState(null); const courseId = 2347; //先用概率统计A来调试吧 diff --git a/src/pages/questionList/index.tsx b/src/pages/questionList/index.tsx index eea3ef1..5103fda 100644 --- a/src/pages/questionList/index.tsx +++ b/src/pages/questionList/index.tsx @@ -27,7 +27,6 @@ interface IQuestion { } const App = () => { - const [course, setCourse] = useState(null); const [questions, setQuestions] = useState(null); const courseId = 2347; //先用概率统计A来调试吧 From 90a12405122d17756153119080efcb262e20aa23 Mon Sep 17 00:00:00 2001 From: MaggieMii <1350383261@qq.com> Date: Wed, 11 Sep 2024 18:30:15 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=F0=9F=8C=88=20style:=20eslint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/questionInfo/index.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/pages/questionInfo/index.tsx b/src/pages/questionInfo/index.tsx index 677685a..9a05239 100644 --- a/src/pages/questionInfo/index.tsx +++ b/src/pages/questionInfo/index.tsx @@ -1,10 +1,11 @@ +import { View } from '@tarojs/components'; +import Taro from '@tarojs/taro'; +import React, { useEffect, useState } from 'react'; + import { Course } from '@/common/assets/types'; import CourseInfo from '@/common/components/CourseInfo/CourseInfo'; import QuestionDetail from '@/common/components/QuestionDetail/QuestionDetail'; // 假设你的组件文件名为QuestionDetail.tsx import { get } from '@/common/utils/fetch'; -import { View } from '@tarojs/components'; -import Taro from '@tarojs/taro'; -import React, { useEffect, useState } from 'react'; interface IQuestion { id: number; @@ -73,7 +74,7 @@ const Index: React.FC = () => { const [answers, setAnswers] = useState(null); const courseId = 2347; //先用概率统计A来调试吧 - const [questionId, setQuestionId] = useState(null); + const [questionId, setQuestionId] = useState(null); // const questionId = 5;