Вот App.js
в приложении «Собственный реагировать» 0.59
(навигация по реагированию 3.4.1):
const socket = io(GLOBAL.BASE_URL, {
transports: ['websocket'],
jsonp: false
});
var props = {
eventId: "",
user: "",
socket: socket
};
const ChatWithSocket = (props) => (<Chat {...props} />)
//create the navigator
const navigator = createStackNavigator(
{
Event: Event,
Chat: {
screen: ChatWithSocket,
}
}, {
initialRouteName: "Event"
}
);
//export it as the root component
export default createAppContainer(navigator);
Здесь props
определяется тремя элементами, eventId, user and socket
.Первым 2 элементам присваивается "", а сокету присваивается значение const socket
.
this.props.navigation.navigate("Chat", {eventId: id, user: this.state.user});
Вот код в компоненте Event
для перехода к Chat
с двумя подпорками eventId and user
.Проблема в том, что socket
в props
теряется в Chat
.Вот результат работы реквизитов:
04-14 14:29:09.149 20137 20199 I ReactNativeJS: 'Props in chat : ', { screenProps: undefined,
04-14 14:29:09.149 20137 20199 I ReactNativeJS: navigation:
04-14 14:29:09.149 20137 20199 I ReactNativeJS: { pop: [Function],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: popToTop: [Function],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: push: [Function],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: replace: [Function],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: reset: [Function],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: dismiss: [Function],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: goBack: [Function],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: navigate: [Function],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: setParams: [Function],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: state:
04-14 14:29:09.149 20137 20199 I ReactNativeJS: { params:
04-14 14:29:09.149 20137 20199 I ReactNativeJS: { eventId: 1,
04-14 14:29:09.149 20137 20199 I ReactNativeJS: user:
04-14 14:29:09.149 20137 20199 I ReactNativeJS: { id: 1,
04-14 14:29:09.149 20137 20199 I ReactNativeJS: name: 'test uer1',
04-14 14:29:09.149 20137 20199 I ReactNativeJS: email: null,
04-14 14:29:09.149 20137 20199 I ReactNativeJS: cell: '123456789',
04-14 14:29:09.149 20137 20199 I ReactNativeJS: cell_country_code: '1',
04-14 14:29:09.149 20137 20199 I ReactNativeJS: comp_name: null,
04-14 14:29:09.149 20137 20199 I ReactNativeJS: status: 'active',
04-14 14:29:09.149 20137 20199 I ReactNativeJS: role: 'admin',
04-14 14:29:09.149 20137 20199 I ReactNativeJS: device_id: '02f7e7aa907a2a2b',
04-14 14:29:09.149 20137 20199 I ReactNativeJS: user_data: { user_secret: '' },
04-14 14:29:09.149 20137 20199 I ReactNativeJS: last_updated_by_id: null,
04-14 14:29:09.149 20137 20199 I ReactNativeJS: createdAt: '2019-04-06T07:00:00.000Z',
04-14 14:29:09.149 20137 20199 I ReactNativeJS: updatedAt: '2019-04-06T07:00:00.000Z' } },
04-14 14:29:09.149 20137 20199 I ReactNativeJS: routeName: 'Chat',
04-14 14:29:09.149 20137 20199 I ReactNativeJS: key: 'id-1555277341463-1' },
04-14 14:29:09.149 20137 20199 I ReactNativeJS: router: undefined,
04-14 14:29:09.149 20137 20199 I ReactNativeJS: actions:
04-14 14:29:09.149 20137 20199 I ReactNativeJS: { pop: [Function: pop],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: popToTop: [Function: popToTop],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: push: [Function: push],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: replace: [Function: replace],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: reset: [Function: reset],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: dismiss: [Function: dismiss],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: goBack: [Function: goBack],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: navigate: [Function: navigate],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: setParams: [Function: setParams] },
04-14 14:29:09.149 20137 20199 I ReactNativeJS: getParam: [Function],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: getChildNavigation: [Function: getChildNavigation],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: isFocused: [Function: isFocused],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: dispatch: [Function],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: getScreenProps: [Function],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: dangerouslyGetParent: [Function],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: addListener: [Function: addListener],
04-14 14:29:09.149 20137 20199 I ReactNativeJS: emit: [Function: emit] } }
При определении const ChatWithSocket
в App.js опробовано следующее, и все они содержат значение socket
, но не принимают позднее назначенное значение eventId and user
вEvent
компонент:
var props = {
eventId: "",
user: "",
socket: socket
};
const ChatWithSocket = () => (<Chat {...props} />)
и:
var props = {
eventId: "",
user: "",
};
const ChatWithSocket = () => (<Chat {...props} socket=socket />)