Я бы просто хотел получить текст div в Home. js когда кнопка нажата ... Я настроил createContext ();
Я пытался использовать Refs it не работает .. так что теперь я пытаюсь createContext () ... В themeContext. js У меня есть функция handleChange, которая передается в Button. js при нажатии я просто хотел бы текстовое содержимое div в доме. js.
живой код
Index. js:
import React from "react";
import ReactDOM from "react-dom";
import { ThemeContextProvider } from "./themeContext";
import App from "./App";
const RootElement = document.getElementById("root");
ReactDOM.render(
<ThemeContextProvider>
<App />
</ThemeContextProvider>,
RootElement
);
themeContext. js:
import React, { Component } from "react";
const { Provider, Consumer } = React.createContext();
class ThemeContextProvider extends Component {
state = {
test: "test"
};
handleChange = () => {
this.test.textContent
};
render() {
return (
<Provider
value={{ test: this.state.test, handleChange: this.handleChange }}
>
{this.props.children}
</Provider>
);
}
}
export { ThemeContextProvider, Consumer as ThemeContextConsumer };
Кнопка. js:
import React from "react";
import { ThemeContextConsumer } from "./themeContext";
export default function Button(props) {
return (
<>
<ThemeContextConsumer>
{context => <button onClick={context.handleChange}>ooMe</button>}
</ThemeContextConsumer>
</>
);
}
Дом. js:
import React from "react";
import { ThemeContextConsumer } from "./themeContext";
import Button from "./Button";
export default function Home(props) {
return (
<>
<ThemeContextConsumer>
{context => (
<>
<div className={context.test}>You Exposed Me!</div>
<br />
<h4>
Button From Test:
<br />
<Button handleChange={context.handleChange} />
</h4>
</>
)}
</ThemeContextConsumer>
</>
);
}
Приложение. js
import React from "react";
import "./styles.css";
import Home from "./Home";
import Another from "./Another";
export default function App() {
return (
<div className="App">
<Home />
<Another />
</div>
);
}