我正在尝试将子组件的状态传递给App.js
文件。为此,我想使用新的上下文 API。
但是我读过这不起作用,因为如果值动态变化,提供者必须是消费者的父级。
就我而言,我不需要动态更改它,我只想将状态传递给消费者。子组件的状态不会改变,所以以后不改变也没问题。
这可以将状态从BlogPost.js
to传递App.js
吗?如果有使用上下文 API 的替代方法,这也很好。
我的代码:
应用程序.js:
import BlogPost from './containers/BlogPost/BlogPost';
import { MediaContext } from './containers/BlogPost/BlogPost.js'
class App extends Component {
render() {
return (
<div>
<BlogPost />
<MediaContext.Consumer>
{value =>
console.log(value)}
</MediaContext.Consumer>
</div>
);
}
}
export default App
BlogPost.js:
应该传递这个组件的状态。如果我在其中定义上下文React.createContext('hello')
就可以了。但我不能在那里定义状态。
export const MediaContext = React.createContext();
class BlogPost extends Component {
state = {
title: "title",
image: {
src: "link",
alt: "alt,
credits: "Unsplash",
},
text: "Text Text Text",
media: {
type: 'music',
audiosrc: 'audiosrc',
coversrc: 'coversrc',
artist: 'artist',
title: 'Songtitle',
started: false
},
}
render() {
return (
<article>
<MediaContext.Provider value={this.state}>
</MediaContext.Provider>
</article>
);
}
}
export default BlogPost;