Erkundung der Kontext-API-Anwendung
P粉964682904
P粉964682904 2023-09-09 15:34:11
0
1
476

Ich habe viele Methoden ausprobiert. Nachdem ich viele der oben genannten Lösungen gelesen habe, konnte ich dieses Problem immer noch nicht lösen. Kann mir jemand helfen, Kontext in meinem Projekt zu verwenden?

SearchContext.jsx

import { createContext } from 'react'; const SearchContext = createContext(); export default SearchContext;

Search.jsx

import * as React from 'react'; import { useState, useContext } from 'react'; import Paper from '@mui/material/Paper'; import AccountCircleIcon from '@mui/icons-material/AccountCircle'; import SearchIcon from '@mui/icons-material/Search'; import { Box, IconButton, InputBase } from '@mui/material'; import SearchContext from '../Context/SearchContext'; export default function Search() { const [searchQuery, setSearchQuery] = useState(''); const handleSubmit = (event) => { event.preventDefault(); }; const handleInputChange = (event) => { setSearchQuery(event.target.value); }; return (              ); }

Das verwende ich. ist es richtig ? Ich habe es später hier verwendet

import React, { useContext, useEffect, useState } from 'react'; import { ApiService } from '../../API/ApiService'; import SearchContext from '../../Context/SearchContext'; function NumberOfContestParticipated({ handle }) { const [contestCount, setContestCount] = useState(null); const searchQuery = useContext(SearchContext); console.log(searchQuery); useEffect(() => { const fetchData = async () => { const ratingUrl = `https://codeforces.com/api/user.rating?handle=${handle}`; const ratingData = await ApiService(ratingUrl); if (ratingData && ratingData.status === 'OK') { setContestCount(ratingData.result.length); } else { setContestCount(0); } }; fetchData(); }, [handle]); return ( 
{contestCount !== null ? (

Number of contests participated by {handle}: {contestCount}

) : (

Loading...

)}
); } export default NumberOfContestParticipated;

Aber wenn ich searchQuery protokolliere, gibt es einen undefinierten Wert. Was habe ich falsch gemacht?

Index.js

import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import App from './App'; import SearchContext from './Context/SearchContext'; ReactDOM.render(    , document.getElementById('root') );

P粉964682904
P粉964682904

Antworte allen (1)
P粉764003519

我认为您的问题是NumberOfContestParticipated组件不是Provider组件的子组件,因此当状态更改时上下文仍然未定义。另外,我觉得很奇怪,您将应用程序包装在提供程序中两次,如果您包装整个App组件,则不需要这样做。

查看这篇文章,了解有关如何操作的更多信息使用上下文。

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!