保存新数据 - React Native + Firebase

时间:2017-05-30 00:35:03

标签: android reactjs firebase react-native firebase-realtime-database

你们中的任何人都可以给我一个用户/ uid更新的例子吗?我该如何提供更新?

我知道我可以这样做以提供更新:database().ref(`/users/${uid}`).update(newData),但我在哪里实现此代码?

1 个答案:

答案 0 :(得分:0)

如果您使用Redux,请在操作页面中使用此查询。

代表:

    In src/actions/userActions.js
    
import firebase from '../your/path/";
rootRef = firebase.database().ref();
        
export const updateUser = (newData)=> ((dispatch, getState)=> {

      // get the uid of the user here, you can get it directly from state if you stored it in state earlier, or you can use, the currentUser method from firebase if you used their auth module as well.
    
const state = getState();
let uid = state.uid;
rootRef.child(`/users/${uid}`).update(newData);
    
// dispatch something
     
);

如果您不使用Redux, 只需将更新操作包装在组件页面的函数中,并在需要时调用它

代表:

在src / components / UserUpdate.js

// import necessary react and react native modules
import firebase from '../your/path/of/firebase config'
rootRef = firebase.database().ref();

export default class UserUpdate extends Component {
  updateUser = () => {
    // get your userId and new data ;
    rootRef.child(`users/${uid}`).update(newData);
  }

  render() {
    return ( <
      TouchableOpacity onPress = {
        this.updateUser()
      } >
      <
      Text > Update User < /Text> <
      /TouchableOpacity>
    );
  }
}

注:

  1. newData必须是对象(JSON格式)

  2. 所有查询都返回promise,因此使用then和catch

  3. 正确处理它们
  4. 我创建动作的方式可能与你的有点不同,因为我不使用switch case,但我使用辅助函数为我生成它们。