Serhii
Нужно знать под какой экран верстка
Michael
Serhii
get не принимает параметры
Michael
Serhii
Vlad
можно размеры указывать в условных единицах rem, а величину rem рассчитывать от размеров экрана, вот удобная библиотека https://github.com/vitalets/react-native-extended-stylesheet
Gena
Гм... удобная библиотека у нас в проекте выглядит так:
// theme.ts
class Theme {
/**
* Point size in design document
*/
pt: number = calculatePointSizeForThisDevice()
/**
* Hairline width (1 device pixel)
*/
hairlineWidth: number = StyleSheet.hairlineWidth
/**
* Base (normal) font size
*/
fontSize: number = this.pt * 18
// ... many other constants
aligned(pt: number): number {
return PixelRatio.roundToNearestPixel(this.pt * pt)
}
}
const theme = new Theme()
export default theme
Gena
Обсуждали уже jettifier для react-native? https://github.com/mikehardy/jetifier#usage-for-source-files
Интересно. Ещё не пробовал.
Вижу один недостаток: "Call npx jetify run in the postinstall target of your package.json (Any time your dependencies update you have to jetify again)" на самом деле не когда зависимости обновляются, а всегда, когда что-то меняется в node_modules, к примеру при билде в CI где очевидно каждый раз делается npm ci, это будет происходить каждый раз.
Второе, это требует ручного режима управления, потому что, насколько я помню доки гугла, они не смогли сделать конверсию 1-в-1, т.е. там есть какие-то классы отдельные и неизвестные наперед или какие-то варианты использования, при которых даже их официальный jetifier (который только на скомпиленный код работает) не способен разрулить всё в 100% случаев.
И вот сочетание первого и второго пункта меня напрягает.
Dmitry
Dmitry
Если только ты не пытаешься парсить странички)
Eli
Привет, кто может ответить на вопрос
Eli
сколько раз такая команда будет выполняться: export default new MyComponent() ?
Eli
Интересует ответ, при каких ситуациях будет больше одного раза
Alexander
Eli
Ох ну и новости, я знаю. А так же знаю что на нем нужно вызывать Object.freeze чтобы не запускался больше 1 раза
Alexander
Alexander
Ты экспортируешь не объект, а его экземпляр
Eli
но вот при каких обстоятельствах он может вызываться, это интересно
Eli
да я понимаю это, при каких обстоятельствах экспорт два раза вызывается?
Eli
абсолютно всегда?
Eli
или есть исключения?
Alexander
Gena
или есть исключения?
Всегда в пределах одного js контекста, за исключением багов в бандлере.
К примеру, некоторые глупые бандлеры (или среды исполнения) могут посчитать файл импортнутый через разные имена - разными файлами, в этом случае модуль может выполниться несколько раз.
К примеру:
1. регистронезависимая файловая система:
файл A.js: import singleton from './base'
файл B.js: import singleton from './Base'
2. доступ по разным относительным путям:
файл A.js: import singleton from './base'
файл B.js: import singleton from '../components/base'
Так не должно быть, это баги, но shit happens )
Eli
Но, а как так он никогда не высвобождается из памяти что-ли? Получается любой export default new ...() будет все время висеть после первого импорта?
Gena
Он будет висеть, пока находится в области видимости... если его импортнуть и использовать, то на него будет ссылка из ф-ции использования и он будет жить, пока жива область видимости использующего модуля и так оно будет до глобальной области видимости скорей всего цепляться... там могут быть ньюансы, связанные с тем как бандлер работает, проще всего попробовать скомпилить код и посмотреть там... а то они любят это во всякие iife заворачивать
Gena
А в ноде оно точно будет висеть до смерти процесса, потому что там кеш модулей есть.
Eli
Eli
Я создал, пробовал чтобы только находился в зоне видимости Test.js в Button.js или в Def.js, чтобы в App его не было.
Eli
Но все равно он не создавался снова, значит один раз инициализируется и на все время жизни модуля.
Eli
Object.freeze() выходит нужно делать обязательно для синглтонов, чтобы не заполнять память которая не может быть стерта во время жизни модуля
Черненый Алексей
Project 'yourApp' not found in root project 'studentAccount'.
Черненый Алексей
что это может быть? все было нормально, теперь падает, откатываю комиты, не помогает
Anonymous
HI.
Deleted Bird
Hi bros.
Шахзод
Доброе утро всем, а для rn есть ли что нибудь как для react rekit studio ?
Gena
Никто не решал проблему с тем, что FlatList и затем VirtualizedList передает в нижележащий ScrollView все свои св-ва, в том числе data со всеми данными? В реальном окружении это ни на что не сказывается (надеюсь), а вот в снапшот тестах через react-test-renderer, это формирует снапшот, который помимо верстки содержит сериализованный объект с данными, раскрывающий внутренности реализации. Это засоряет снапшоты и они ломаются при изменении шейпа данных даже в той части, которая реально никак не влияет на верстку. Хоть свой мок пиши под ScrollView, который бы отфильтровывал ненужное... 😕
Gena
Вот этот кусок в исходниках: https://github.com/facebook/react-native/blob/0.59-stable/Libraries/Lists/VirtualizedList.js#L928-L961
Kto?
Gena
Никто не решал проблему с тем, что FlatList и затем VirtualizedList передает в нижележащий ScrollView все свои св-ва, в том числе data со всеми данными? В реальном окружении это ни на что не сказывается (надеюсь), а вот в снапшот тестах через react-test-renderer, это формирует снапшот, который помимо верстки содержит сериализованный объект с данными, раскрывающий внутренности реализации. Это засоряет снапшоты и они ломаются при изменении шейпа данных даже в той части, которая реально никак не влияет на верстку. Хоть свой мок пиши под ScrollView, который бы отфильтровывал ненужное... 😕
Если интересно кому, решение (хак):
Берем исходный мок для ScrollView: https://github.com/facebook/react-native/blob/0.59-stable/Libraries/Components/ScrollView/__mocks__/ScrollViewMock.js
Копируем к себе, сетапим его jest'ом заместо исходного и переписываем метод рендер вот так:
было:
render() {
return (
<RCTScrollView {...this.props}>
{this.props.refreshControl}
<View>{this.props.children}</View>
</RCTScrollView>
);
}
стало:
render() {
// ignore "data" prop, flatlist pass this prop with whole data 😕
const { refreshControl, children, data, ...scrollProps } = this.props
return (
<RCTScrollView {...scrollProps}>
{refreshControl}
<View>{children}</View>
</RCTScrollView>
)
}
Eli
Gena
Eli
понятно, а DI мало кто использует и вообще он тут не нужен?
Gena
У нас в проекте он сам в каком-то усеченном варианте родился. Кто-то наверное и готовые решения берет, не знаю...
Eli
Eli
В ES7 появились декораторы
Eli
для DI
Eli
значит тема синглтонов в памяти актуальная как я думаю
Eli
@singleton
export default class SingletonClass {
Dr
Всем привет. Установил библиотеку react-native-blur, после этого перестал работать дебаггер, просто прилага виснит на моменте download javascript bundle 100%. Как только выключаю remote js debugging, сразу все нормально. Сталкивался кто-нибудь с таким?
Тони
Всем привет друзья,подскажите пожалуйста
вот кусочек кода, и вот первый параметр который передается в нативную часть, какое у него имя?
Тони
Kirill
Тони
Ivan
там получается список свойств этого объекта
Kirill
Тони
Всмысле в нативную часть?)) У тебя объект mapPoint)
в прямом смысле, у меня часть приложения написано на Java, в итоге java получает данные ,сейчас она получает, lat,lng,startTime, endTime.
А мне нужно получить весь объект item
И я не могу понять как его спарсить, если параметры выше парсятся по таким-же именам, а как сам item спарсить не понятно
Ivan
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Spread_syntax
Kirill
в прямом смысле, у меня часть приложения написано на Java, в итоге java получает данные ,сейчас она получает, lat,lng,startTime, endTime.
А мне нужно получить весь объект item
И я не могу понять как его спарсить, если параметры выше парсятся по таким-же именам, а как сам item спарсить не понятно
Вы похоже не поняли, как работает данный оператор. Почитайте пожалуйста, это снимет ваши вопросы)
Тони
Vadim
Ребята есть кто работал с Azure AD? кто как прописывал redirectURL?
Alexander
Всем добра. Товарищи кто то натыкался?
Alexander
Крашит при старте
Eli
Gena
Konstantin
Всем привет. Не понимаю почему так
Есть компонент, в нем componentDidMount через fetch получает данные и кладет их в this.state, в render делаю вывод из this.state, с текстовыми данными все хорошо, но в том же fetch еще приходит массив из которого формируются Button
Эти Button я вывожу так
{this.state.requestItem.buttons &&
this.state.requestItem.buttons.map((button, key) => (
<Button title={button.name} onPress={this._doAction(button.key)}/>
)
)
}
Проблема в том что когда я нажимаю на кнопку - действия, которое прописано в onPress не происходит.
Зато это же действие происходит после того как отработал fetch и заполнился state
В _doAction я пока что написал только console.log(key), и в консоле я вижу этот самый key в момент показа экрана данного компонента
Как решить такое? Всем ответившим - спасибо.
Dmitry
Dmitry
да
Dmitry
потом что в onPress ты передаешь не функцию, а сразу вызов
Konstantin
да
понял
но почему кнопка которая выводиться сразу в render без fecth, типа так
<Button title="Выход" onPress={this._signOutAsync}/>
она работает только при нажатии?
Dmitry
Dmitry
читать доки в js срочно
Dmitry
onPress={this._signOutAsync} - здесь ты не вызываешь функцию, а просто передаешь.
onPress={this._doAction(button.key)} - здесь ты вызываешь функцию, а не просто передаешь
Konstantin
Ivan
Товарищи, а вы что используете для маскирования инпутов?
Олег
Может кто-то кинуть ссылку на готовые side bar)