91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Next.js腳手架完整搭建封裝實例分析

發布時間:2022-04-27 11:39:44 來源:億速云 閱讀:474 作者:iii 欄目:開發技術

這篇文章主要介紹“Next.js腳手架完整搭建封裝實例分析”,在日常操作中,相信很多人在Next.js腳手架完整搭建封裝實例分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Next.js腳手架完整搭建封裝實例分析”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

運行效果

Next.js腳手架完整搭建封裝實例分析

代碼實現

import type { NextPage } from 'next'
import Head from 'next/head'
import Image from 'next/image'
import React, {useEffect, useState } from 'react';
import {useDispatch,useSelector} from 'react-redux'
import fetch from 'node-fetch';
import api from '../http/api';
import {changeUserAC} from "../redux/actions/index"
import axios from 'axios';
import Publish from '../components/common/Publish/Publish';
import { compileString } from 'sass';

const Home: NextPage = (props:any) => {
//異步請求的數據(客戶端渲染);
  const [name,setName]=useState<any>("")
  useEffect(()=>{
    (async()=>{
      const res:any =await axios({
        url:"https://api.apiopen.top/getSingleJoke?sid=28654780"
      })
      setName(res.result.name)
      console.log("客戶端獲取的數據",res);
      console.log("服務端注入的數據",props);
    })();
  },[])
//異步請求的數據(客戶端渲染);

  //狀態機內部的數據;
  const stateData:any = useSelector<any>(state=>{
    console.log("狀態機數據",state);
    return state
  })
  //狀態機內部的數據;

  //派發action修改狀態機內部的數據;
  const dispatch = useDispatch();
  const changeRedux=()=>{
    dispatch(changeUserAC("李海"))
  } 
  //派發action修改狀態機內部的數據;

  //調用封裝的axios獲取后臺數據
  const getData = async () => {
    const res:any = await api.dataManage.GetCollectionData();
    console.log('請求結果',res);
    alert(`請求結果${res.result.name}`)
  };
  //調用封裝的axios獲取后臺數據

  const compareEffect=async()=>{
    window.location.reload()
  }

  //saga攔截
  const goToSaga=()=>{
    dispatch(
      {
        type:'changeUserData',
        payload:'劉利'
      }
    )
  } 
  //saga攔截

  return (
    <>
          <div>
            <p>來自服務端注入預渲染的:{props.data.result.name}</p>
            <p>來自異步請求返回的:{name}</p>
            <p><button onClick={()=>compareEffect()}>對比服務端渲染和客戶端渲染效果</button></p>
            <p>來自Redux的數據:{stateData.user.users}</p>
            <p><button onClick={()=>changeRedux()}>派發事件修改redux數據</button></p>
            <p><button onClick={()=>getData()}>調用封裝的axios獲取后臺數據</button></p>
            <p><button onClick={()=>goToSaga()}>通過saga中間件攔截后修改redux數據</button></p>
            <div style={{marginLeft:30,marginTop:30}}><Publish/></div>
          </div>
    </>
  );
}

export async function getServerSideProps() {
  const res = await fetch(`https://api.apiopen.top/getSingleJoke?sid=28654780`)
  const data = await res.json()
  return { props: { data } }
}
// export async function getStaticProps() {
//   const res = await fetch('...')
//   const posts = await res.json()
//   return {
//     props: {
//       return { props: { data } }
//     },
//   }
// }
export default Home

到此,關于“Next.js腳手架完整搭建封裝實例分析”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马龙县| 英超| 扎囊县| 张家界市| 措美县| 和龙市| 余庆县| 饶阳县| 朝阳县| 宝清县| 通道| 威信县| 彭山县| 淄博市| 密山市| 隆安县| 将乐县| 阿克| 临邑县| 祁连县| 寿光市| 石楼县| 兴宁市| 南投县| 清水河县| 昌乐县| 永兴县| 汾西县| 姜堰市| 东港市| 江城| 奎屯市| 丘北县| 桂平市| 肥城市| 富锦市| 临泽县| 三明市| 陈巴尔虎旗| 江达县| 化德县|