第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在每個組件上調用的用戶 api

在每個組件上調用的用戶 api

慕尼黑5688855 2023-04-01 16:35:10
您好,我正在使用 laravel 后端 REST API 和 React 作為前端。我的問題是每條路線上都有很多對用戶 api 的調用。如果我去/category我收到了一個用戶 API 請求,因為我需要有用戶信息,比如如果是管理員;用戶名;...,這是正常的,因為我在 App.js 上調用了這個 api 我試圖在 上做一個條件語句來知道componentDidMount我是否已經擁有我狀態(tài)下的用戶數(shù)據,但是 React 返回給我infinite loop一個this.setState({user: data})所以我的問題是我可以調用一次 api 嗎?或者我是否需要使用 Redux 來存儲一次用戶數(shù)據并使用這些數(shù)據?我的 App.js:import React from 'react';import axios from 'axios';import {BrowserRouter as Router, Switch, Route, Redirect} from 'react-router-dom';import Login from "./pages/Login";import Home from "./pages/Home";import Profile from "./pages/Profile";import Register from "./pages/Register";import Header from "./components/Header";import Administration from "./pages/Administration";import './assets/main.css'import './App.css'import PrivateRoute from "./components/PrivateRoute";import Category from "./pages/Category";import Product from "./pages/Product";import Order from "./pages/Order";import User from "./pages/User";import Support from "./pages/Support";export default class App extends React.Component {    constructor(props) {        super(props);        this.state = {            redirectToHome: false,            isLog: false,            isAdmin: false,            user: null,        }    }    componentDidMount(){        if (localStorage.getItem('token')){            axios.post('auth/me')                .then((res) => {                this.setUser(res.data)                 })                .catch((err) => {                    localStorage.removeItem('token')                })        }    }    setUser = (user) => {        this.setState({user: user})    }    render() {        if (this.state.redirectToHome){            return <Redirect to={'/'} from={'/logout'} />        }        return (            <Router>                <div>                    <Header user={this.state.user} setUser={this.setUser} />                </div>
查看完整描述

1 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

要只調用一次用戶獲取代碼,您需要一個地方來管理用戶狀態(tài)以檢查它之前是否被調用過。你有兩個不錯的選擇。您可以使用 Redux 并在全局狀態(tài)中緩存用戶值,或者您可以在傳遞狀態(tài)中使用 Context API 和緩存。根據您擁有的路由數(shù)量,我會誠實地建議使用 redux,因為它(在我看來)對于較大的應用程序更好。上下文可能會變得混亂,因為它沒有嚴格區(qū)分操作、縮減器和當前狀態(tài)。



查看完整回答
反對 回復 2023-04-01
  • 1 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號