Ошибки, вызывающие React createContext

#javascript #reactjs #context-api

#javascript #reactjs #реагировать-контекст

Вопрос:

Я пытаюсь изучить React context API. Я пытаюсь создать контекст со значением по умолчанию green, позже измененным поставщиком контекста на red. Я получаю ошибку «значение не определено». Пытаясь временно устранить проблему, предоставив постоянный цвет, я получаю ошибку рендеринга. Как заставить этот код успешно использовать context API и передавать цвет?

 import React from "react";
import "./styles.css";
const Counter = React.createContext("green");

export default function App() {
  return (
    <>
      <Counter.Provider value={"red"}>
        <Counter.Consumer>
          <div className="App">
            <h1 style={{ color: value }}>Hello World!</h1>
          </div>
        </Counter.Consumer>
      </Counter.Provider>
    </>
  );
}
  

PS Я попытался реализовать React.useContext вместо простой передачи значения, но была выдана ошибка ссылки, указывающая, что «значение» не определено.

Codesandbox:https://codesandbox.io/s/suspicious-buck-xvvlf?file=/src/App.js

Ответ №1:

Как говорится в документах, потребитель контекста принимает функцию стиля «render prop» как дочернюю.

 import React from "react";
import "./styles.css";
const Counter = React.createContext("green");

export default function App() {
  return (
    <>
      <Counter.Provider value={"red"}>
        <Counter.Consumer>
          {(value) => (  // <-- new
            <div className="App">
              <h1 style={{ color: value }}>
                Hello World!
              </h1>
            </div>
          )}
        </Counter.Consumer>
      </Counter.Provider>
    </>
  );
}