Size: a a a

React Native — русскоговорящее сообщество

2020 September 01

ЕЯ

Евгений Яремченко... in React Native — русскоговорящее сообщество
Евгений Яремченко
Юзал для диплинкинга лиюу, которая ХОК предоставляла, правда она давненько не обновлялась
Писал такой сервис:

/**
* This service contains the deeplinking logic.
*
* @format
*/

import { createDeepLinkingHandler } from 'react-native-deep-link';
import { navigate } from './NavigationService';

const handleOpenProduct = ({ params: { productId } }) => ({openProductInfoFromTheLink}) => {
 console.log('@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@');
 console.log(productId);
 // addCurrentUserToChannel is a redux-thunk action,
 // which was defined somewhere in the code.

 openProductInfoFromTheLink(Number.parseInt(productId, 10));
 navigate('About');
};

const schemes = [
 {
   name: 'rnmodules:',
   routes: [
     {
       expression: '/products/:productId',
       callback: handleOpenProduct
     }
   ]
 },
 {
   name: 'http:',
   routes: [
     {
       expression: 'rnmodules/products/:productId',
       callback: handleOpenProduct
     }
   ]
 }
];

export default createDeepLinkingHandler(schemes);
источник

ЕЯ

Евгений Яремченко... in React Native — русскоговорящее сообщество
Евгений Яремченко
Писал такой сервис:

/**
* This service contains the deeplinking logic.
*
* @format
*/

import { createDeepLinkingHandler } from 'react-native-deep-link';
import { navigate } from './NavigationService';

const handleOpenProduct = ({ params: { productId } }) => ({openProductInfoFromTheLink}) => {
 console.log('@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@');
 console.log(productId);
 // addCurrentUserToChannel is a redux-thunk action,
 // which was defined somewhere in the code.

 openProductInfoFromTheLink(Number.parseInt(productId, 10));
 navigate('About');
};

const schemes = [
 {
   name: 'rnmodules:',
   routes: [
     {
       expression: '/products/:productId',
       callback: handleOpenProduct
     }
   ]
 },
 {
   name: 'http:',
   routes: [
     {
       expression: 'rnmodules/products/:productId',
       callback: handleOpenProduct
     }
   ]
 }
];

export default createDeepLinkingHandler(schemes);
Потом рут элемент оборачивал:

const ConnectedApp = connect(
 mapStateToProps,
 mapDispatchToProps
)(withDeepLinking(App));

const Root = () => (
 <Provider store={store}>
   <ConnectedApp
     onGetInitialUrlError={(err) => {
       console.log('?????????????????????????1');
       console.log(err);
     }}
     onCanOpenUrlError={(err) => {
       console.log('?????????????????????????2');
       console.log(err);
     }}
     onUrlIsNotSupported={(url) => {
       console.log('?????????????????????????3');
       console.log(The ${url} is not supported.);
     }}
     onCannotHandleUrl={(url) => {
       console.log('?????????????????????????4');
       console.log(A handler for the ${url} was not found.);
     }}
   />
 </Provider>
);
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Леонид Соболев
Всем привет! Есть проблема, использую stackNavigator и при переходе на предыдущий экран, экран полностью ререндерится)) поискал инфа про параметр lazy, он есть только в вкладочном навигаторе) как решить проблему? Заранее спасибо
Поместите в ваш экран компонент, который со sCU (ну или с memo, react-redux'овским connect) и который будет ререндерится только по делу, и внутрь этого компонента уже весь свой код.
источник

ЕЯ

Евгений Яремченко... in React Native — русскоговорящее сообщество
Евгений Яремченко
Потом рут элемент оборачивал:

const ConnectedApp = connect(
 mapStateToProps,
 mapDispatchToProps
)(withDeepLinking(App));

const Root = () => (
 <Provider store={store}>
   <ConnectedApp
     onGetInitialUrlError={(err) => {
       console.log('?????????????????????????1');
       console.log(err);
     }}
     onCanOpenUrlError={(err) => {
       console.log('?????????????????????????2');
       console.log(err);
     }}
     onUrlIsNotSupported={(url) => {
       console.log('?????????????????????????3');
       console.log(The ${url} is not supported.);
     }}
     onCannotHandleUrl={(url) => {
       console.log('?????????????????????????4');
       console.log(A handler for the ${url} was not found.);
     }}
   />
 </Provider>
);
Дальше точно не помню, прокидывал ли он что-то в пропсы, но уже хотя б из методов можно какой-нибудь экшн в редакс вызвать и понеслась
источник

AK

Anastasia Klyashtorn... in React Native — русскоговорящее сообщество
Завтра попробую ваши предложения. Спасибо вам огромное ❤️
источник

ЛС

Леонид Соболев... in React Native — русскоговорящее сообщество
Gena Black
Поместите в ваш экран компонент, который со sCU (ну или с memo, react-redux'овским connect) и который будет ререндерится только по делу, и внутрь этого компонента уже весь свой код.
А можно пример? Не совсем понимаю
источник

ЕЯ

Евгений Яремченко... in React Native — русскоговорящее сообщество
Anastasia Klyashtorna
Завтра попробую ваши предложения. Спасибо вам огромное ❤️
Таким образом у меня как минимум получалось по диплинку перейти на нужный продукт. Логику проверки на авторизованность, я думаю, тоже получится добавить
источник

ЕЯ

Евгений Яремченко... in React Native — русскоговорящее сообщество
Главное, чтобы на текущей версии РН заработало
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Леонид Соболев
А можно пример? Не совсем понимаю
Что именно не понимаете?

// Ну вот допустим скрин
class MyScreen extends React.Component {
 render() {
   return <MyScreenContent />
 }
}

// Это контент скрина
const MyScreenContent = React.memo(() => <SomeContent />)
источник

GB

Gena Black in React Native — русскоговорящее сообщество
SomeContent не будет ререндериться
источник

ЛС

Леонид Соболев... in React Native — русскоговорящее сообщество
Понял! Спасибо
источник

F

Future in React Native — русскоговорящее сообщество
Поставил проект, хотел запустить с експо
источник

F

Future in React Native — русскоговорящее сообщество
Проблема импорта какая-то
источник

AP

Albatross Promotion in React Native — русскоговорящее сообщество
работал у меня после команды npm install
источник

F

Future in React Native — русскоговорящее сообщество
Вроде делал и кеш чистил
источник

SK

Sergei Komarov in React Native — русскоговорящее сообщество
Насколько сильно реактнатив проигрывает свитфу тому же по производительвости? Понятно, что игры на нем не напишешь, но какой его придел по нагрузке?
источник

F

Future in React Native — русскоговорящее сообщество
Sergei Komarov
Насколько сильно реактнатив проигрывает свитфу тому же по производительвости? Понятно, что игры на нем не напишешь, но какой его придел по нагрузке?
Зависит от болевого порога
источник

П

Павел in React Native — русскоговорящее сообщество
Sergei Komarov
Насколько сильно реактнатив проигрывает свитфу тому же по производительвости? Понятно, что игры на нем не напишешь, но какой его придел по нагрузке?
Ну почему ). Всякие ролевые игры 2d по типу великий султан можно спокойно написать.
источник

DB

Denis Barvitskiy in React Native — русскоговорящее сообщество
Sergei Komarov
Насколько сильно реактнатив проигрывает свитфу тому же по производительвости? Понятно, что игры на нем не напишешь, но какой его придел по нагрузке?
О какой нагрузке идет речь? 90% всех приложений это отправить/принять/отобразить информацию. Тут даже не нужна высокая производительность.
источник

F

Future in React Native — русскоговорящее сообщество
Future
Поставил проект, хотел запустить с експо
Скажите чего готовый проект не хочет запускаться, может что не так делаю.
Чисто експо старт пишу
источник