繁体   English   中英

React Native Firebase仅获取一个数据

[英]React Native Firebase Fetching Only One Data

如何仅获取一个数据并将其写入Header?
我正在使用Firebase和react-redux。

我尝试写的firebase结构“ organization ”:inovanka: 我尝试写“ ** organization **”的firebase结构:inovanka

动作文件代码:

import firebase from 'firebase';
import { Actions } from 'react-native-router-flux';
import { ORGANIZATION_NAME_DATA_SUCCESS } from './types';


 export const organizationName = () => {
    const { currentUser } = firebase.auth();
      return (dispatch) => {
        firebase.database().ref(`/organizations/${currentUser.uid}`)
          .on('value', snapshot => {
            dispatch({ type: ORGANIZATION_NAME_DATA_SUCCESS, payload: snapshot.val() });
        });
    };
  }

减速器文件:

import { ORGANIZATION_NAME_DATA_SUCCESS } from '../actions/types';

const INITIAL_STATE = {

};

export default (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case ORGANIZATION_NAME_DATA_SUCCESS:
      console.log(action); // data retrieved as array
      return action.payload
    default:
      return state;
  }
};

组件:(我想写成这个)

    class HomePage extends Component {

      componentWillMount() { 
      }

      render() {
        return (
          <Container>
            <Header> 
              <Text> i would like to write it here </Text>
            </Header>
            <Content>

            </Content>
          </Container>
        );
      }
    }

    const mapStateToProps = ({ homepageResponse }) => {
      const organizationArray = _.map(homepageResponse, (val, uid) => {
        return { ...val, uid }; //
      });
      return { organizationArray };
    };

    export default connect(mapStateToProps, { organizationName })(HomePage);

更改此:

firebase.database().ref(`/organizations/${currentUser.uid}`)
      .on('value', snapshot => {

对此:

firebase.database().ref(`/organizations/${currentUser.uid}`)
      .once('value', snapshot => {

使用once()将仅读取一次数据,因此仅获取一个数据

解决方案在这里!

动作文件:

export const organizationName = () => {
    const { currentUser } = firebase.auth();
      return (dispatch) => {
        firebase.database().ref(`/organizations/${currentUser.uid}`)
        .once('value', snapshot => {
          _.mapValues(snapshot.val(), o => {
            console.log(o);
          dispatch({ type: ORGANIZATION_NAME_DATA_SUCCESS, payload: {organization: o.organization, fullname: o.fullname }});
          });
        });
    };
  }

减速器文件

const INITIAL_STATE = {
  organization: '',
};

export default (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case ORGANIZATION_NAME_DATA_SUCCESS:
      console.log(action);
      return {...state, organization:action.payload.organization };
    default:
      return state;
  }
};

组件文件MapToStateProps和componentWillMount

 const mapStateToProps = state =>  {
    const { organization, fullname  } = state.homepageResponse;
    console.log("burada" + organization);
       return { organization, fullname };
};




 componentWillMount(){
    this.props.organizationName();
  }

*最后一步标题*

render() {
    return (
      <Container>
        <Header>
          <Text>  { this.props.organization } </Text>
        </Header>
      </Container>
}

谢谢大家

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM