Не удалось добавить моего провайдера в файл index.js в reactjs

У меня есть компонент MovieDetails.js и контекст (имя MyContext) и поставщик (имя MyProvider). Компонент MyProvider имеет список фильмов. Я хотел бы отобразить этот список в MovieDetails component.so, в файле index.js импортировал компоненты MovieDetails и MyContext, как показано ниже.

import {MovieDetails} from './Assignment/Topic12Assignment1/MovieDetails'  
import { MyProvider } from './Assignment/Topic12Assignment1/MyContext';

попробуйте визуализировать компонент MovieDetails, как показано ниже.

<MyProvider>
ReactDOM.render(<MovieDetails />,document.getElementById('root'));
</MyProvider>

возврат ошибки, как показано ниже

https://stackru.com/imag es/5f6141a9e5d3f583271bc6b21756650fcc431bc1.png

не понимаю, где я что-то пропустил?

ниже код - компонент MovieDetails

import React, { useState, useContext }  from 'react'
import {MyContext} from './MyContext'

export const MovieDetails = () => {
  const [movies,setMovies] = useContext(MyContext);
  debugger
    return(
        <React.Fragment>
      {
              <li>{movies.length}</li>
      }
        </React.Fragment>
    )
}

Ниже код для файла MyContext

import React, {useState,createContext} from 'react'
//import AppReducer from './AppReducer'

export const MyContext = createContext();
export const MyProvider = (props) => {
    const [movies,setMovies] = useState([ {MovieID:1,MovieName:'Rangastalam',LeadActor:'RamCharan',LeadActree:'Samantha'
    ,YearOfRelease:2019,Language:'Telugu',Collections:'200Crores'},
   {MovieID:2,MovieName:'AVP',LeadActor:'AlluArun',LeadActree:'Puja'
    ,YearOfRelease:2020,Language:'Telugu',Collections:'400Crores'},
   {MovieID:3,MovieName:'Saaho',LeadActor:'Prabhas',LeadActree:'Shraddha'
    ,YearOfRelease:2020,Language:'Telugu',Collections:'300Crores'}]);

    return(
<MyContext.MyProvider value = {'testomg'}>{props.children}</MyContext.MyProvider>
    );
};

код индексного файла

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';

import {MovieDetails} from './Assignment/Topic12Assignment1/MovieDetails'
import { MyProvider } from './Assignment/Topic12Assignment1/MyContext';

<MyProvider>
ReactDOM.render(<MovieDetails />,document.getElementById('root'));
</MyProvider>
serviceWorker.unregister();

код файла приложения

import React from 'react';
import logo from './logo.svg';
import './App.css';

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;

1 ответ

Решение

Ошибка в MyProvider файл

return (
  <MyContext.MyProvider value={"testomg"}>{props.children}</MyContext.MyProvider>
);

должно быть

return (
  <MyContext.Provider value={"testomg"}>{props.children}</MyContext.Provider>
);

Также в index.js файл это должно быть исправлено

<MyProvider>
ReactDOM.render(<MovieDetails />,document.getElementById('root'));
</MyProvider>

должно быть

ReactDOM.render(
<MyProvider>
  <MovieDetails />
</MyProvider>
,document.getElementById('root'));
Другие вопросы по тегам