return {
...state,
user: {
...state.user,
response: { ...action.payload },
}
}
function removeFromStructure(id) {
return { type: REMOVE_FROM_STRUCTURE, paylodad: id }
}
function doSomething(id) {
return { type: DO_SOMETHING, paylodad: id }
}
function commonAction(structureObject) {
return structureObject.blockId ? removeFromStructure(id) : doSomething(id)
}
match({ routes, location, [history], [...options] }, cb)
// автоматически создаст историю
match({ routes, location})
// автоматически создаст историю, при этом передав параметр someOption
// выглядеть это будет примерно так
// createMemoryHistory(options)
match({ routes, location, someOption })
// вы создаете историю сами (звучит эпично)
match({ routes, location, history })
match({ routes, location, basename: 'base' })
чтобы при заходе на localhost,сразу писалось типа такого localhost/base
const action = {
id: 132,
_key: 'some key',
_value: 564
}
return {
...state,
structure: {
...state.structure,
[id]: { ...(state.structure[id] || {}), ...action },
}
}
...(state.structure[id] || {})
import _ from 'lodash'
const { id, parentId } = action
// удаляем из структуры свойство с именем id
const nextStructure = _.omit(state.structure, id)
return {
...state,
structure: {
...nextStructure,
[parentId]: {
...nextStructure[parentId],
childIds: nextStructure[parentId].childIds.filter(cId => cId !== id)
}
}
}
const { id, parentId } = action
// в данном случае у нас будет переменная
// const removed = state.structure[id]
// а в переменную nextStructure попадут все значения, кроме id
const { [id]: removed, ...nextStructure } = state.structure
return {
...state,
structure: {
...nextStructure,
[parentId]: {
...nextStructure[parentId],
childIds: nextStructure[parentId].childIds.filter(cId => cId !== id)
}
}
}
// JavaScript module import
import { browserHistory } from 'react-router'
const goBack = () => browserHistory.previous()
<button type="button" onClick={goBack}>Назад</button>
shouldComponentUpdate(nextProps, nextState) {
return shallowCompare(this, nextProps, nextState);
}
<html>
<head>
<script>
window.__INITIAL_DATA__ = <?= printInitialData() ?>
</script>
</head>
<body>
<div class="reactRoot"></div>
<script src="bundle.js" />
</body>
</html>
constructor(props) {
super(props);
this.state = {
activeIndex : 0
};
}
const store = createStore(history, client, initialState)
store.dispatch(appActions.loadInitialData())
render((
<Provider store={store}>
<Router history={finalHistory}>
{routes}
</Router>
</Provider>
), reactRootElement)
function loadInitialData() {
return dispatch => axios
.get(`${apiPrefix}/entities`)
.then(entities => dispatch(saveEntities(entities)))
}
class MyD3Component extends Component {
componenDidMount() {
ReactDOM.findDOMNode(this.refs.container) // для d3
}
render() {
return <div ref="container" />
}
}
class Container extends React.Component {
constructor(props){
super(props);
}
componentDidMount(){
console.log('componentDidMount', Object.keys(this.refs));
// outputs: [ 'ch0', 'ch1' ]
}
render(){
return (
<div>{React.Children.map(this.props.children, (ch, i) => React.cloneElement(ch, { ref: 'ch' + i }))}</div>
);
}
}
ReactDOM.render(
<Container>
<div>hello</div>
<div>world</div>
</Container>,
document.querySelector('.main-container')
);