2016-10-27 14 views
0

私はReduxを使い慣れていないので、間違っていることがわかりません。私は、最初のページに働くカウンタを使用しています店舗を別のページに接続できません

最初のページ:

'use strict'; 

import React, {Component} from 'react'; 
import {bindActionCreators} from 'redux'; 
import Counter from '../components/counter'; 
import * as counterActions from '../actions/counterActions'; 
import { connect } from 'react-redux'; 
import { Router, Scene, Route, ActionConst } from 'react-native-router-flux'; 

import Home from './Home'; 


class Routing extends Component { 
    constructor(props) { 
    super(props); 
    } 

    componentDidMount(){ 
    const { state, actions } = this.props; 
    console.log(state.count); //This returns 0 just like it's supposed to 
    } 

    render() { 
    return (
     <Router> 
     <Scene hideNavBar="true" key="root"> 
      <Scene counter={state.count} key="home" component={Home} initial={true} animation="false" duration='0' /> 
     </Scene> 
     </Router> 
    ) 
    } 
} 

export default connect(state => ({ 
    state: state.counter 
    }), 
    (dispatch) => ({ 
    actions: bindActionCreators(counterActions, dispatch) 
    }) 
)(Routing); 

ホームページ:

import React, { Component } from 'react'; 
import { Text } from 'react-native'; 
import { Actions } from 'react-native-router-flux'; 
import { connect } from 'react-redux'; 
import * as counterActions from '../actions/counterActions'; 
import {bindActionCreators} from 'redux'; 



export default class Home extends Component { 
    constructor(props) { 
    super(props); 

    this.state = {}; 
    } 


    render() { 
    const { state, actions } = this.props; 
    return (
     <Text> 
      {state.counter} 
     </Text> 
    ) 
    } 
} 


export default connect(state => ({ 
    state: state.counter 
    }), 
    (dispatch) => ({ 
    actions: bindActionCreators(counterActions, dispatch) 
    }) 
)(Home); 

ホーム・ページに接続するには私にエラーをスローFailed to execute 'importScripts' on 'WorkerGlobalScope'

私はシーンを使用しているので、React Native Router Fluxと関係があると思っていましたが、ホームページにストアを接続しようとすると発生します。

+1

あなたは 'Home'コンポーネントの2'輸出default'sを持っています。ファイルごとに「デフォルトエクスポート」は1つだけ許可されます。 'const'はブロックスコープであるため、' Routing'の 'componentDidMount'に' const state = ... 'を代入すると' state'は 'render'の中でアクセスできなくなります。 – NiFi

+0

あなたは正しくレンダリングの中でそれにアクセスすることはできません..しかし、私はどのように輸出のデフォルトを使用せずにホームに接続すると思いますか?私はそれを使用しない場合、それはエラーを与えることはありませんが、私はまだthis.props.counterにアクセスすることはできません。 –

+0

代わりにHomeクラスからエクスポートのデフォルトを削除しました。 –

答えて

1

コードのためのいくつかのポインタ。

  1. Homeコンポーネント用の2つのexport default Sは現在ありません。ファイルごとに1つのデフォルトエクスポートのみが許可されます。あなたはconnect()の結果を公開するので、

    export default class Home extends Component {

    class Home extends Component {変更されます。

  2. constブロックスコープであるため、現在のブロック内にのみ存在します。 stateactionsRoutingcomponentDidMountに定義すると、renderの内部では使用できません。ただ、Routingコンポーネントのrenderメソッドの内部でそれらの定義を移動します。

    render() { 
        const { state, actions } = this.props; 
    
        return (
        <Router> 
         <Scene hideNavBar="true" key="root"> 
         <Scene counter={state.count} key="home" component={Home} initial={true} animation="false" duration='0' /> 
         </Scene> 
        </Router> 
    ) 
    } 
    
関連する問題