All streams
Search
Write a publication
Pull to refresh
24
0
Andrew Ka @comerc

#кодеротбога

Send message
Наш вывод: если есть желание использовать JS для разработки приложений, то стоит использовать NativeScript.

Не понял, а вы ушли с JS?

Инструменты для разработки очень глючные (по состоянию на месяц обратно), постоянно приходится что-то перезапускать.

Это видимо под Android, или под iOS тоже?

React Native намертво привязан к React.

Может это был основной вопрос? Я сам очень долго испытывал аллергию к JSX.

На видео выше — летает, если сравнивать с поделкой на Meteor-е. Второй проект PhoneGap на Phaser — уже лучше. Хотя там только HTML5-canvas, а все равно лаги. Crosswalk обещал помочь, но я этого уже не дождался.

А что творилось с PhoneGap на iOS в мою бытность полтора года назад — это не передать литературными словами. Тогда и родилась мечта освоить React Native.

Мопед не мой.

Redux — это архитектура приложения. Хотя камрады на Clojure со мной не согласны. У них свои велосипеды.

По опыту, каких компонентов не хватает? Автор доклада уверяет, что уже можно найти все, что угодно.

Буквально вчера искал, как React-приложении выполнить переход между страницами, ничего лучше, чем router.push() пока не нашел. Пример. Надеюсь, что плохо искал.

А как бы побыстрее собирать проект на этапе разработки под Android? На IntelXDK сборка проекта PhoneGap выполнялась шустро, если не путаю. Судя по видео в конце доклада, для Mac-а тоже Simulator готов к изменениям кода практически в реальном времени. А в Android Studio наблюдаю задержку 20 сек.

Спасибо за ducks, теперь вообще замечательно!


import { createAction, createReducer } from 'redux-act'

export const actions = {
  inputTitle: createAction('@@edit_post/INPUT_TITLE', title => ({ title })),
  submit: createAction('@@edit_post/SUBMIT', post => post),
}

const initialState = {
  flow: '',
  title: '',
  content: ''
}

const reducer = createReducer({
  [actions.inputTitle]: (state, { title }) => ({...state, title}),
  [actions.submit]: (state, post) => ({...state, ...post})
}, initialState)

export default reducer

Но! Этот способ плох для передачи props в PureComponent, onClick={ga(...)} при каждом рендеринге будет возвращать новую функцию. Для понимания вопроса — видео.

Изменил структуру папок: вместо раздельных actions и reducers, объединил попарно файлы в папке ducks. Мы согласились на HTML внутри JS, зачем же бегать за экшенами и редюсерами по разным файлам?


ducks/editPost.js


import { createAction, createReducer } from 'redux-act'

export const actions = {
  inputTitle: createAction('@@edit_post/INPUT_TITLE', title => ({ title })),
  submit: createAction('@@edit_post/SUBMIT', post => post),
}

const initialState = {
  flow: '',
  title: '',
  content: ''
}

const reducer = createReducer({
  [actions.inputTitle]: (state, { title }) => ({...state, title}),
  [actions.submit]: (state, post) => ({...state, ...post})
}, initialState)

export default reducer

На мой вкус — замечательно!

Красивый способ избавиться от switch:


import { createAction } from 'redux-act'

export const inputTitle = createAction('@@edit_post/INPUT_TITLE', title => ({ title }))
export const submit = createAction('@@edit_post/SUBMIT', post => post)

import { createReducer } from 'redux-act'
import * as EditPostActions from '../actions/EditPostActions'

const initialState = {
  flow: '',
  title: '',
  content: ''
}

const reducer = createReducer({
  [EditPostActions.inputTitle]: (state, { title }) => ({...state, title}),
  [EditPostActions.submit]: (state, post) => ({...state, ...post})
}, initialState)

export default reducer

Прочитал с листа код из примера, а из статьи смог вынести полезного про уникальность возвращаемых значений символов.


Поставьте себя на место тех, кто будет на поддержке кода. Пожалуйста!

Например обращение к внешнему API, когда присутствует задержка ответа.

Следующая прекрасная статья для дальнейшего погружения в промисы (но и она освещает не все вопросы).

Information

Rating
Does not participate
Registered
Activity