Ключ в том, что styled-components
2.x.x поддерживает React v0.14, но 4.x.x переключается на React v16.3. Вот цитата из их doc :
- v2.x (React v0.14 +): IE9 +, все вечнозеленые браузеры
- v3.x (React v0.14 +): IE9 +, все вечнозеленые браузеры
- v4.x (React v16.3 +): IE11, IE 9+ (с полифилами Map + Set), все вечнозеленые браузеры
React изменил свой API контекста, и теперь у него нет метода getChildContext()
, который возвращал объект контекста. Вы можете узнать больше о новом React Context API здесь
Поскольку ThemeProvider
имеет theme
prop (именно так вы передаете объект темы в него), если вы не хотите переписывать много кода, вы можете просто изменить getChildContext()
на props.theme
. В противном случае вам лучше использовать подход рекомендуемый от jest-styled-components и писать следующим образом, передавая вашу тему непосредственно вашему компоненту:
const wrapper = shallow(<Button theme={theme} />)
где, например
const Button = styled.button`
color: ${props => props.theme.main};
`
const theme = {
main: 'mediumseagreen',
}