life's People
life's Issues
Дополнительные данные в action'е
Все дополнительные данные в экшене желательно записывать в payload
, и соответственно в редьюсерах мы эти данные берем из payload
. Т.е. должно быть так:
export const toggleLive = (row, column) => ({
type: types.TOGGLE_LIVE,
payload: {
row,
column,
},
});
Логика повторного вызова nextStep()
Будет правильнее вынести ее из контейнера play-button и разместить в action-creator'ах, т.к. если ты решишь привязать запуск игры к чему-то другому, то не сможешь воспользоваться уже написанным кодом, и придется либо дублировать, либо выносить этот код. Проще всего воспользоваться middleware для redux - redux-thunk, он позволяет использовать асинхронные action-creator'ы.
Не протестированы вызовы колбеков событий
При создании компонента передавай ему шпиона sinon.spy(), симулируй событие и проверяй был ли вызван шпион. Если нужно, можно проверить с какими параметрами был вызван шпион.
defaultProps для необязательных полей
Для всех необязательных полей помимо propTypes обязательно нужно задавать defaulProps.
Все экспорты должны быть в конце файла
Тесты на соответствие структуре
В некоторых тестах, например, компоненты control-panel и game, ты проверяешь полное соответствие отрисованного компонента на всю глубину. Это не правильно, компонент game знает что он содержит в себе два элемента ControlPanel и CellGridContainer, и он не должен знать полную структуру этих элементов, их структура должна тестироваться в их собственных тестах.
Представь себе такую ситуацию, у тебя есть некий компонент А, который используется в пяти других компонентах. Все они протестированы на всю глубину. И как только ты решишь изменить структуру компонента А, тебе придется переписывать все тесты для всех компонентов использующих компонент А.
Здесь правильнее будет воспользоваться enzime.sallow и поискать внутри компоненты ControlPanel и CellGridContainer, без проверки внутренней структуры этих компонентов.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.