Отправка данных в импортированный модуль в React Native - PullRequest
0 голосов
/ 14 октября 2018

У меня есть модуль Chat.js, который импортирует Fire.js для отправки данных (сообщение поступает в Chat.js, а Fire.js обрабатывает хранилище).

У меня есть идентификатор пользователя получателя, которыйв настоящее время доступен только в Chat.js, но важно, чтобы добраться до Fire.js, чтобы хранить соответствующим образом.

Я удалил некоторую информацию для краткости, это мой текущий Chat.js:

import Fire from './Fire';

class Chat extends React.Component<Props> {

  state = {
    messages: [],
  };

  get user() {
    return {
      name: this.props.navigation.state.params.name,
      _id: Fire.shared.uid,
    };
  }

  render() {
    return (
      <GiftedChat
        messages={this.state.messages}
        onSend={Fire.shared.send}
        user={this.user}
      />
    );
  }

  componentDidMount() {
    Fire.shared.on(message =>
      this.setState(previousState => ({
        messages: GiftedChat.append(previousState.messages, message),
      }))
    );
  }
  componentWillUnmount() {
    Fire.shared.off();
  }
}

export default Chat;

И это мой текущий Fire.js:

import firebase from 'react-native-firebase';
class Fire {
  constructor() {
  }



  get ref() {
    var recipient = 'recipientId'
    return firebase.database().ref('messages/' + this.uid + '/' + recipient);
  }

  parse = snapshot => {
    const { timestamp: numberStamp, text, user } = snapshot.val();
    const { key: _id } = snapshot;
    const timestamp = new Date(numberStamp);
    const message = {
      _id,
      timestamp,
      text,
      user,
    };
    return message;
  };

  on = callback =>
    this.ref
      .limitToLast(20)
      .on('child_added', snapshot => callback(this.parse(snapshot)));


  // send the message to the Backend
  send = messages => {
    for (let i = 0; i < messages.length; i++) {
      const { text, user } = messages[i];
      const message = {
        text,
        user,
        timestamp: this.timestamp,
      };
      this.append(message);
    }
  };

  append = message => this.ref.push(message);

  // close the connection to the Backend
  off() {
    this.ref.off();
  }
}

Fire.shared = new Fire();
export default Fire;

Я сейчасМне нужно получить идентификатор получателя, который доступен в chat.js в

this.props.navigation.state.params.uid

В строках Fire.js:

get ref() 
    {
    var recipient = 'recipientId'

Я не могу получить этот идентификатор вget ref ()

1 Ответ

0 голосов
/ 14 октября 2018

Используйте getter и setters в Fire.js.

В Fire.js

setRecipient (id){
    this.recipientId = id;
}
get getRecipientId () {
    return this.recipientId;
}

И затем вызовите Fire.setRecipient(yourId) inChat.js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...