GET /wp/v2/posts/<id>
как сделать вывод именно того поста по которому нажали
<Route path='/posts/:id' component={PostMoreContainer} />
./Message.jsx
неправильный export defaultВзял текущее состояние, добавил в начало массива элемент. сделал диспатч нового массива.
setAdminData: [clients_info, ...currentList]
setAdminData: currentList.concat(clients_info)
let arr1 = [1,2,3,4]
let arr2 = arr1
arr2.unshift(1)
console.log(arr1)
module.exports = {
devtool: 'cheap-module-source-map',
entry: [
'./src/index'
],
output: {
path: path.join(__dirname, 'production/public/'),
filename: 'bundle.js',
publicPath: '/',
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('production')
}
}),
new ExtractTextPlugin({
filename: 'style.css',
disable: false,
allChunks: false, // true
})
],
module: {
rules: [
{
test: /\.js$/,
loaders: ['babel-loader'],
include: path.join(__dirname, 'src'),
},
{
test: /\.css$/,
loader: ExtractTextPlugin.extract({
fallbackLoader: 'style-loader',
loader: ['css-loader', 'postcss-loader'],
publicPath: '/public',
}),
}, {
test: /\.scss$/,
loader: ExtractTextPlugin.extract({
fallbackLoader: 'style-loader',
loader: ['css-loader', 'postcss-loader', 'sass-loader'],
publicPath: '/public',
}),
},
....
module.exports = {
devtool: 'cheap-module-source-map',
entry: [
'./src/index'
],
output: {
path: path.join(__dirname, 'production/public/'),
filename: 'bundle.js',
publicPath: '/',
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('production')
}
}),
new ExtractTextPlugin('style.css', {
allChunks: false
})
],
module: {
loaders: [
{
test: /\.js$/,
loaders: ['babel'],
include: path.join(__dirname, 'src')
},
{
test: /\.scss$/,
include: path.join(__dirname, 'src'),
loader: ExtractTextPlugin.extract('style-loader', 'css-loader!postcss-loader!sass-loader')
},
{
test: /\.css$/,
loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
},
...
const ExtractTextPlugin = require('extract-text-webpack-plugin');
this.setState({data ... })
this.state.data
с помощью map / forEach / тд...
constructor(props) {
super(props)
this.state = {
data: []
}
}
...
componentDidMount() {
// ваш ajax запрос
// в success коллбэке устанавливаете новый state, из-за этого произойдет ре-рендер
success: function(data) { this.setState(data) }
}
render() {
const { data } = this.state
...
<table className='table table-bordered table-striped'>
<thead>
<tr>
<th>name</th>
</tr>
</thead>
<tbody>
{
data.map(item => {
return (
<tr key={item._id}>
<td>{item.name}</td>
</tr>
)
})
}
</tbody>
</table>
...
}
// кусочек из reducer'a
case GET_DETAILED_FILES_REQUEST:
return {
...state,
isFetching: true,
}
...
// код из теста
it('GET_DETAILED_FILES_REQUEST', () => {
const action = {
type: GET_DETAILED_FILES_REQUEST,
}
const nextState = reducer(initialState, action) // где reducer = ваш настоящий редьюсер, например " import reducer from '../../src/reducers/detailedFiles' "
expect(nextState).to.deep.equal({
...initialState,
isFetching: true,
})
})
import 'react-virtualized/styles.css'
(и при этом не нужно писать путь от node_modules), думаю если разобраться как они это сделали - для вас это будет решением) я храню меняющуюся информацию в state именно этого компонента
стоит ли эти текущие state объявить в state всего приложения и менять их там
..
deleteNote(e) {
console.log(e.target.dataset.item) //здесь будет идентификатор элемента
}
...
<span onClick={self.deleteNote} data-item={i} className={"close"}>X</span>
...