【发布时间】:2021-01-25 20:13:29
【问题描述】:
我想动态更改我的网络应用程序的背景,因此我想使用包含上下文的上下文。我收到此错误:TypeError:render is not a function。 这是 ThemeContext.js:
class BookList extends Component {
render() {
return (
<ThemeContext.Consumer> {(contextTheme) => (
<BookContext.Consumer>
{contextBook => {
const {books} = contextBook;
const { isDarkTheme, dark, light } = contextTheme;
const theme = isDarkTheme ? dark : light;
return (
...
...
)
}}
</BookContext.Consumer>
)}
</ThemeContext.Consumer>
)
}
}
export default BookList;
class ThemeContextProvider extends React.Component {
state = {
isDarkTheme : true,
dark: { bg: '#d2f3df', txt: '#0f0f0f', hover: '#f0f0f0ca'},
light : {bg : '#288888', txt: '#f0f0f0', hover : '#f0f0f0ca'}
}
render() {
return (
<ThemeContext.Provider value={{...this.state}}>
{this.props.children}
</ThemeContext.Provider>
)
}
}
export default ThemeContextProvider;
这是子上下文(BookContext):
import React from 'react';
export const BookContext = React.createContext();
class BookContextProvider extends React.Component {
state = {
...
...
}
render() {
return (
<BookContext.Provider value= {this.state}>
{this.props.children}
</BookContext.Provider>
)
}
}
export default BookContextProvider;
【问题讨论】:
-
尝试去掉
<ThemeContext.Provider value={{...this.state}}>这里的双{{ }},只有一个{} -
当我删除它时,我从终端收到一个错误。
-
你遇到了什么错误?
-
'语法错误:意外的令牌。'如果我删除两个括号之一。
标签: javascript css reactjs producer-consumer react-context