showInfoPage(e) {
const id = e.currentTarget.id
// далее нужно вызвать сам переход
// я делаю это через push из react-router-redux ( import { push } from 'react-router-redux' )
// можно прокинуть через dispatch
dispatch(push('/information/'+id))
//конечно, у вас dispatch скорее всего будет прокинут из props, поэтому финальный вариант
this.props.dispatch(push('/information/'+id))
}
<tr onClick={showInfoPage} id={infos.id}>
<td key={infos.id}>{infos.id}</td>
<td key={infos.about}>{infos.about}</td>
</tr>
...
let AppSmallRedux = connect(
(store) => ({ data: store.reducerAppSmall }), // (1)
dispatch => ({
update: () => dispatch({ type: "UPDATE_AppSmall" })
})
)(AppSmall);
...
let AppRedux = connect(
(store) => ({ data: store.reducerApp }), // (2)
dispatch => ({
update: () => dispatch({ type: "UPDATE_App" })
})
)(App);
...
class App extends React.Component {
constructor(){
super();
this.state ={
count: [1,2,3,4,5,6,7,8,9]
}
}
removeCount(idx){ // <= здесь было idk (опечатка)
let newItems = this.state.count;
newItems.splice(idx, 1);
this.setState({count: newItems});
}
render() {
const self = this
const list = this.state.count.map(function(index, i){
// здесь у вас был не тот this, так как вы используете обычную функцию, а не стрелочную, "this равный компоненту" теряется, чтобы разобраться можете тут сконослить this и self
return <div key={i} onClick={self.removeCount.bind(self, i)}><p>{index}</p></div>
})
return (
<div className="row">
{list}
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById('container'));
$(".dealbtn-up")
$(".dealbtn-up")[0].click()
...
const request = require('superagent-bluebird-promise')
...
export function addProduct(formData) {
return dispatch => {
dispatch({ type: PRODUCT_ADD_REQUEST })
if (formData.image) {
return request.post(`${API_ROOT_V1}/api/v1/products/add`)
.field('name', formData.name)
.field('price', formData.price)
.field('description', formData.description)
.field('providerId', formData.providerId)
.attach('image', formData.image, formData.image.name) // добавление картинки
.then(...) // здесь дальнейшая обработка в случае успеха
} else { // кейс, когда у товара нет картинки
return request.post(`${API_ROOT_V1}/api/v1/products/add`)
.send(formData)
.then(...)
}
}
}
...
// (обработчик сабмита формы)
this.props.addProduct({
name,
price,
description,
image: findDOMNode(this.refs.image).files[0], // (забираю картинку)
providerId: this.props.providerId,
})
...
// непосредственно кнопка загрузки файла в форме
<div className='form-group'>
<input
id='productImage'
type='file'
name='image'
placeholder='Image'
onChange={this.handleChange}
value={this.state.image}
data-field-name='image'
ref='image' />
<p>Load product image</p>
</div>
...
<Route path='/articles/:id' component={Article}>
, где параметром является имя_переменной после двоеточия, в данном пример - idthis.props.params.id
что jsx-скрипт распарсивается какой-то библиотекой написаной на стандартном javascript и транслирует в него же...
{
"url": "/",
"name": "Nikulio"
}
{
user: {
url...
name....
}
}