Первоначально назначенный реквизит потерян с атрибутами распространения - PullRequest
0 голосов
/ 15 апреля 2019

Вот 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 />)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...