Looks like `setState` updates children props only when root.
- Dominant language
- JavaScript
- Stars
- 19.8k
- Forks
- 2k
- PR merge metrics
- No merged PRs in 30d
Description
### Current behavior
```typescript
import * as React from 'react'
import { mount } from 'enzyme'
const Bar = ({bar}) =>
class Foo extends React.Component {
state = {
foo: 'rachid'
}
render() {
return
}
}
class Parent extends React.Component {
render() {
return
}
}
it('Passes props when root', () => {
const wrapper = mount();
wrapper.setState({foo: 'hamid'});
expect(wrapper.state('foo')).toEqual('hamid');
expect(wrapper.find(Bar).prop('bar')).toEqual('hamid');
});
it('Passes props when non root', () => {
const wrapper = mount();
const fooWrapper = wrapper.find(Foo);
fooWrapper.setState({foo: 'hamid'});
expect(fooWrapper.state('foo')).toEqual('hamid');
expect(fooWrapper.find(Bar).prop('bar')).toEqual('hamid'); // This fails
});
```
### Expected behavior
I expect `setState` to have the same behavior as when the component is root.
### Your environment
Linux
#### API
- [ ] shallow
- [x] mount
- [ ] render
#### Version
| library | version
| ------------------- | -------
| enzyme | ^3.8.0
| react | ^16.7.0
| react-dom |
| react-test-renderer |
| adapter (below) | ^1.8.0
#### Adapter
- [x] enzyme-adapter-react-16
- [ ] enzyme-adapter-react-16.3
- [ ] enzyme-adapter-react-16.2
- [ ] enzyme-adapter-react-16.1
- [ ] enzyme-adapter-react-15
- [ ] enzyme-adapter-react-15.4
- [ ] enzyme-adapter-react-14
- [ ] enzyme-adapter-react-13
- [ ] enzyme-adapter-react-helper
- [ ] others ( )
Contributor guide
Assessment
This issue has not been assessed yet.