2017-08-31 10 views
4

なぜ、自分のコンポーネントのWiredReceivePropsがレスキューネイティブで実行されていないのですか?私は不変を使用して減速機でボタンのログインを実行します。店舗ですでに更新したがcomponentWillReceivePropsはちょうど私がすでに不変使用しますが、このアップデートでは、まだコンポーネントが応答ネイティブとレビュックスで呼び出されていない

const listProduct = (oldstate, value)=>{ 
console.log(oldstate); 
let newState = {...oldstate, data: value.data.data} 
console.log(newState); 
return newState 
} 

const login = (oldstate, value)=>{ 
let newState = {...oldstate, token: value} 
return newState 
} 

const initialState = {} 

const product = (state=initialState, actions)=>{ 
switch (actions.type) { 
case "GET_PRODUCK": return listProduct(state, actions.payload); 
case "LOGIN": return login(state, actions.payload); 
default: return state 
}} 

export default product 

答えて

0

呼び出されていないコンポーネントにreceivePropsなぜcomponentWillUpdateとDidUpdateに減速でのみ

import React, { Component } from 'react' 

class Main extends Component{ 
    constructor(props){ 
    super(props) 
    this.state = { 
    active : '', 
    username: '', 
    password: '' 
    } 
} 

componentWillReceiveProps(newProps) { 
console.log(newProps.load(), 'Component WILL RECIEVE PROPS!') 
} 

componentWillUpdate(nextProps, nextState) { 
console.log(nextProps, nextState, 'Component WILL UPDATE!'); 
} 

componentDidUpdate(prevProps, prevState) { 
console.log(prevProps,'Component DID UPDATE!') 
} 

handleButtonAction(actions){ 
let user = this.state.username 
let pass = this.state.password 
if(actions === 'login'){ 
    this.props.login(user, pass) 
} 
} 

render(){ 
    const {navigation} = this.props; 
return(
      <Button block onPress={()=>this.handleButtonAction('login')} style= 
    {{marginLeft: 10, marginRight: 10}}> 
      <Text>Login</Text> 
      </Button> 
    )} 

const mapStateToProps = state =>({ 
    token: state.token 
}) 

const mapDispatchToProps = dispatch => ({ 
login: (user, pass)=> dispatch({type:"LOGIN", payload:'testing'}), 
}) 

export default connect(mapStateToProps, mapDispatchToProps)(Main) 

ジャンプ実行していませんcomponentWillReceivePropsは、小道具が変更されたとき、およびこれが最初のレンダリングでないときにだけ呼び出されます。

componentWillReceivePropsは、以前とまったく同じ小道具を受け取っている場合は呼び出されません。

状態の新しい値を更新することからトリガーしました。

ので、ここでは、あなたはこれが派遣のSyntextがthis.props.dispatch(xyz.login(user, pass)}のようなものです、それは減速機能のログインと呼ばれる状態

を更新しますあなたの減速機能

を呼び出すことはありません関数にlogin

this.props.login(user, pass)を派遣する必要があります

関連する問題