// https://stackoverflow.com/questions/36527536/import-and-convert-js-files-using-gulp-babel
var browserify = require('gulp-browserify');
gulp.task('bundle', function() {
gulp.src('./dist/bar.js') // entry point
.pipe(browserify())
.pipe(gulp.dest('./dist'))
});
const arr = [{a:1},{b:2},{c:3},{d:4}]
//допустим, вы прислали index 1 и сохранили его в переменную index, например
const newArr = [
...arr.slice(0, index), // клонируем все элементы до индекса
...arr.slice(index+1), // клонируем все элементы после индекса
// итого: индексный элемент удален
]
if(action.type === 'REMOVE_STUDENT') {
let newArr = state; // сохранили в newArr ссылку(!!!) на старый массив. Если вы хотели скопировать массив, то нужно было писать: let newARr = [...state] (если в state просто массив)
newArr.splice(action.payload, 1); // здесь вы из newArr ( и из state, так как сохранили ссылку) удалили с ИНДЕКСА один элемент. Так же, внимание, вы используете sPlice, а не slice. Разницу нужно уточнить! (подсказка ниже как)
return newArr.filter(element => element !== action.payload); // а здесь вы что вообще написали? вы сравнили element (что там? объект?) с action.payload (в которой как вы говорите индекс). Что должно быть в итоге? ;)
}
new webpack.DefinePlugin({
'ENV_API_ROOT_V1': JSON.stringify(process.env.ENV_API_ROOT_V1),
'HTTP_PROTOCOL': JSON.stringify(process.env.HTTP_PROTOCOL),
'WS_PROTOCOL': JSON.stringify(process.env.WS_PROTOCOL),
}),
cross-env ENV_API_ROOT_V1=my_url_for_Api.com HTTP_PROTOCOL=https WS_PROTOCOL=wss webpack --progress --config ./webpack.prod.config.js
import { sum } from './my-functions'
ожидаю, что sum(1,3) === 4
import { sum } from './my-functions'
import { should } from 'another-assert-library' // should в переводе "быть/являться"
ожидаю, что sum(1,3).should.be.eql(4) // ожидаю что sum(1,3) будет равно 4
...
axios.get('/user')
.then(res => {
// успешно получили данные
dispatch({ // <-- здесь вы вызываете функцию dispatch, а если она к вам не пришла в анонимной функции, с помощью redux-thunk, то октуда вы ее возьмете?
type: GET_PROFILE_SECCUESS
payload: res.data
})
})
...
React.PropTypes...
PropTypes...
import React, { Component } from 'react'
import { PropTypes } from 'prop-types' // можно и import PropTypes from 'prop-types'
...
ComputersList.propTypes = {
data: PropTypes.shape({
rows: PropTypes.array.isRequired,
isFetching: PropTypes.bool.isRequired,
}).isRequired,
onlineSessions: PropTypes.array.isRequired,
onChangeSort: PropTypes.func.isRequired,
}
Это как-то неудобно, у меня есть идея чтобы вынести List Item (stuff/:id/comp_7/:item_id) и Subitem (stuff/:id/comp_2/:item_id/sublist/:subitem_id) в отдельные контейнеры.
it(`handle action ${patientActions.ON_CHANGE_PATIENT}`, ()=>{
expect(reducer(undefined, {
type: patientActions.PATIENT_INIT_STATE, // тут должно быть patientActions.ON_CHANGE_PATIENT
payload: {
value: '11122',
field: 'patient_ur'
}
})).toEqual({...defaultStates, patient_ur: '11122'})
})
...
const ExtractTextPlugin = require('extract-text-webpack-plugin');
...
// в секции plugins
plugins: [
...
new ExtractTextPlugin({
filename: 'style-[contenthash].css',
disable: false,
allChunks: false, // true
}),
...
]
в секции module -> rules (loaders)
...
{
test: /\.less$/,
loader: ExtractTextPlugin.extract({
fallbackLoader: 'style-loader',
loader: ['css-loader', 'less-loader'],
publicPath: '/public', // ваш publicPath
}),
},
this.state.todos = [ todo1, todo2, todo3 ...]
){
test: /\.scss$/,
use: [
'style-loader',
'css-loader',
'sass-loader',
],
include: path.join(__dirname, 'src'), // ваша директория тут
},
webpack-dev-server --open --hot --config webpack.dev.js
{Registrations:2}
и это устанавливаете в state.MyInput
компоненты отрисовались с пустым значением (вы, в разметке так и указываете value='' => то есть value = пустая строка).для чего поддерживается webpack