Ilya
а самое странное что такое поведение только в продакшен сборке
Dmitry
Хм...
Ilya
Ну как вариант - он таки менялся)
там консоль лог. Который не выводиться - а консоль лог в didMount дочернего выводится
Ilya
грешил на recompact - но убрал все хоки. Поведение не поменялось
Vit
Дочерний знач чето еще кушает
Vit
Типа контекста
Ilya
нет
Ilya
обычный PureComponent
Vit
Это не ответ)
Vit
Надо искать
Ilya
принимает только пропсы. Контекста нет
Dmitry
а можешь показать кодЮ
Ilya
И ничто точно не объясняет разное поведение в prod и dev
Vit
Ну короч основной принцип дебага - чудес не бывает компьютер всегда прав)
Dmitry
я был точно также удивлен, когда код, который несколько месяцев работал исправно, вдруг стал невалидным и завалился в проде, с новой версией RN =)
Ilya
а можешь показать кодЮ
только если примерно - так как пришлось эксперементы пока откатить
Dmitry
тут ничего удивительного. Так как поменалась версия RN
да, но на тот момент, это было неочевидно
Ilya
Ilya
это родитель.
Ilya
блин - со вторым сложнее - я его серьзнее откатил) ну короче это был pureComponent c толко c didMount и render
Ilya
но не думаю что это поможет
Gena
И ничто точно не объясняет разное поведение в prod и dev
Две вещи: 1. Прод это то, что прошло сквозь uglify-es 2. В продакшн вырезаны все if (__DEV__) ... Этих двух фактов достаточно, чтоб ожидать любых сюрпризов. Но конкретно с unmount, я бы на код посмотрел всё же )
Ilya
все проверки по типу DEV проверил.
Gena
К вопросу о!) ктонить на тайпскрипте тянет?
Лучше конкретный вопрос. Или просто в целом интересно?
Gena
все проверки по типу DEV проверил.
Свои, ага )) Вы видели код View?
Dmitry
я конечно могу ошибаться, но
Dmitry
{{data && ( <Component /> )}} внутри render может быть удивительно непредсказуем
Ilya
да и что там может быть непредсказуемого?
Dmitry
ну у меня прод валился бывало на таких конструкция из-за возвращаемого false
Dmitry
!!data &&
но тут просто data &&
Ilya
или углифай как то мог это страшно переписать?
Ilya
я кончно сейчас попробую, по скольку просто нет выбора... но прям совсем не верится. ререндера нет а remount дочернего есть
Ilya
нее
Ilya
эффект тот же
Gena
Я бы предпочел уведить минимальный сэмпл. Т.к. вроде, react и не дает гарантий (особенно после переезда на fibers) на отсуствие лишних рендеров, а вот с unmount/mount... это уже немного странно выглядит.
Gena
А, кстати, если рендерить тот компонент, что анмаунтится с "key", ситуация меняется?
Ilya
Я бы предпочел уведить минимальный сэмпл. Т.к. вроде, react и не дает гарантий (особенно после переезда на fibers) на отсуствие лишних рендеров, а вот с unmount/mount... это уже немного странно выглядит.
семпл воспроизвести сложно. Еще Получается что вверх по дереву есть контекст провайдер. И данные в нем меняются. Но оба этих компонента от него не зависят и лежат достаточно глубоко.., то есть зависит от него не должны.
Dmitry
Possibly some messed state situation, where render would erase element (aka return null) and then render it again.
Dmitry
render is called on dynamic data - like it creates new node tree (even if it is the same as old) dynamicly (new data references created). You should only change props passed down.
Dmitry
это в обсуждениях реакта...
Gena
Вот вот... я про это же...
Dmitry
Component is used within an array in jsx, missing ‘key’ prop. In that case dev react build will throw warnings.
Gena
А вот тут я отдельно отмечу, я посоветовал key вставить не потому, что думаю, что там array, а потому что с помощью key, можно ещё привязать ноду к элементу, более "жестко" что ли.
Ilya
render is called on dynamic data - like it creates new node tree (even if it is the same as old) dynamicly (new data references created). You should only change props passed down.
да тоже не подходит так как родительский не меняется, а значит и null вернуть некому
Ilya
но key пробую
Dmitry
а actions
Dmitry
хотяэто уэже больше на бред похоже)
Gena
actions? по условиям задачи вроде HOCи отрубили... но если нет, то это первое, что надо сделать.
Gena
но key пробую
Можешь ещё, если не страшная тайна, заскриншотить (в dev-билде) дерево из react-devtools того участка, что мы рассматриваем?
Dmitry
@gblack9 пока вспомнил, есть ли варианты дебага mobx, как у redux ?
Dmitry
вроде есть дебаггер но у меня не получилось его завести с RN
Gena
вроде есть дебаггер но у меня не получилось его завести с RN
Я даже не пытался... помнишь, я говорил, что у меня синглтон для доступа к mobx? Без проброса stores через context. Вот с такой схемой он в любом случае не будет работать.
Gena
Это заменяется большим кол-вом тестов для модели.
Gena
дак в dev проблем нет
Да, но хочется хоть какое-то представление поиметь, о том, что рассматриваем. А то как игра "угадайка".
Gena
В принципе при данных входных условиях, не должно быть проблемы с remount.
Ilya
мне кажется за более чем 4 года работы с реактом первый такая вот проблема что вообще не знаешь что делать))
Gena
Вот я и говорю... поэтому хочется как можно больше доп информации... отсюда и просьба поскриншотить дерево компонентов (м.б. там где-то context или hoc затерялся, может ещё что)
Ilya
нв самом деле там много котекстов и порталов, но блииин! не на этих компонентах
Vadim
Парни, кто знает на рынке проекты запущенные на RN в России?
Vadim
спасибо!
Ilya
чет сборка отказывается работать)))
Gena
Опс... а это... веб?
Gena
Там есть ещё причины для ремаунта
Ilya
Опс... а это... веб?
да... но не должно быть разницы