class Example extends Component {
state = {
activeForm: 'login',
};
setActiveForm = name => {
this.setState({ activeForm: name });
};
render() {
const Form = this.state.activeForm === 'login' ? Login : Registration;
return (
<SideBar>
<Form setActiveForm={setActiveForm} />
</SideBar>
);
}
}
И из-за этого не работает роутинг.
withRouter(connect(...)(MainLayout));
И зачем нужно писать экшен, если можно напрямую диспатч вызвать без посредников?
dispatch => ({
onSetScale: (event) => {
dispatch(setScale(event);
}
})
{
onSetScale: setScale,
}
componentDidMount() {
this.props.dispatch(action());
}
Обращался к API в componentDidMount() и отправлял в стейт
но это вызывает перерендеринг компонента и в доках считается нежелательно
const PrintDevicesTable = props => {
const devices = props.devices && props.devices[0];
if (!devices || props.isFetching) {
return <Preloader />;
} else if (devices && !devices.length && !props.isFetching) {
return <NoDataPlaceholder />;
}
const items = devices.map((item, index) => <li key={index}>{item.ModelAlias}</li>);
return <ul>{items}</ul>;
};
class Grid extends React.Component {
getContent() {
const { children } = this.props;
if (!children) return null;
return React.Children.map(children, (child, index) => { // или forEach без return, в зависимости от целей
const { displayName } = child.type;
switch (displayName) {
case 'Column':
// do something
default:
// do something other
}
});
}
render () {
return (
<Wrapper>
{this.getContent()}
</Wrapper>
)
}
}
почитав документацию, я понял что рефы работают только в "классах", и поэтому происодит ошика
'refInput' of undefined
говорит лишь о том, что в вашем рабочем коде метод не привязан к контексту. <Carousel
activeIndex={index}
direction={direction}
onSelect={this.handleSelect}
>
{items.map((item, index) => (
<Carousel.Item key={index}>
<img width={900} height={500} alt="900x500" src={item.src} />
<Carousel.Caption>
<h3>{item.label}</h3>
<p>{item.caption}</p>
</Carousel.Caption>
</Carousel.Item>
))}
</Carousel>
const computeDerivedState = props => ({
someData: props.someData,
});
class Example extends Component {
state = {
...computeDerivedState(this.props),
someState,
};
componentWillReceiveProps(nextProps) {
if (nextProps.someData !== this.props.someData) {
this.setState(computeDerivedState(nextProps));
}
}
}
const result = array.reduce((acc, el) => {
const key = 'Type' + el.type;
acc[key] = acc[key] ? [...acc[key], el] : [el];
return acc;
}, {});
И легально ли этим заниматься в редьюсере ? Может быть middleware лучше подойдет для этого?
class Link = ({ href, children, ...props }) => <a href={href} {...props}>{children}</a>;
const StyledLink = styled(Link)`
// some styles
`;
module.exports = {
/* ... */
output: {
/* ... */
publicPath: '/'
},
/* ... */
devServer: {
historyApiFallback: true,
},
};
"start": "webpack-dev-server --mode development --open --hot --history-api-fallback",