ユーザ用ツール

サイト用ツール


reactnative:react-redux

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

次のリビジョン
前のリビジョン
reactnative:react-redux [2019/01/30 00:11]
ips 作成
reactnative:react-redux [2019/02/02 03:04] (現在)
ips
ライン 5: ライン 5:
 </​code>​ </​code>​
  
 +SyntaxError:​ C:​\Users\Ryu\react\expo-redux\App.js:​ Only one default export allowed per module.
 +<​code>​
 +>npm install redux 
 +</​code>​
  
 +===== 1.stateを使った状態 =====
  
 +<​code>​
 +import React from '​react';​
 +import { StyleSheet, Text, View , TouchableOpacity ,Button ,TextInput} from '​react-native';​
 +
 +export default class App extends React.Component {
 +
 +  constructor(props){
 +    super(props)
 +    this.state = {
 +      count: 0,
 +      name:'​hogehoge'​
 +    };
 +  }
 +
 +  pressPlus(e){
 +    this.setState({count:​this.state.count+1})
 +  }
 +
 +  pressMinuss(e){
 +    this.setState({count:​this.state.count-1})
 +  }
 +
 +
 +  changeName(e){
 +    this.setState(({name:​e}))
 +  }
 +
 +
 +  render() {
 +    return (
 +      <View style={styles.view}>​
 +        <​Text>​Redux Sample</​Text>​
 +
 +        <​TouchableOpacity style={styles.button} onPress={(e)=>​this.pressPlus(e)} >
 +          <​Text>​count plus</​Text>​
 +        </​TouchableOpacity>​
 +
 +        <​TouchableOpacity style={styles.button} onPress={(e)=>​this.pressMinuss(e)} >
 +          <​Text>​count minus</​Text>​
 +        </​TouchableOpacity>​
 +
 +          <​TextInput ​         ​
 +            style={styles.input} ​
 +            onChangeText={(e)=>​this.changeName(e)}>​
 +          {this.state.name}
 +          </​TextInput>​
 +
 +        <​Text>​count:​{this.state.count}</​Text>​
 +        <​Text>​name:​{this.state.name}</​Text>​
 +      </​View>​
 +    );
 +  }
 +}
 +
 +const styles = StyleSheet.create({
 +  view:{
 +    flex: 1, 
 +    alignItems: '​center', ​
 +    justifyContent:​ '​center',​
 +    margin:10,
 +  },
 +  button: {
 +    width: 200,
 +    height: 40,
 +    margin: 5 ,
 +    backgroundColor:​ '​lightblue',​
 +    justifyContent:​ '​center',​
 +    alignItems: '​center',​
 +  },
 +  input: {
 +    width: 200,
 +    height: 40,
 +    margin: 5 ,
 +    backgroundColor:​ '#​f5f5f5',​
 +    borderColor : '​black',​
 +    justifyContent:​ '​center',​
 +    alignItems: '​center',​
 +  },
 +}
 +
 +);
 +
 +</​code>​
 +{{:​reactnative:​pasted:​20190131-062021.png}}
 +
 +
 +==== エラー1 ====
 +<​code>​
 +Invariant Violation: Could not find "​store"​ in the context of "​Connect(App)"​. Either wrap the root component in a <​Provider>,​ or pass a custom React context provider to <​Provider>​ and the corresponding React context consumer to Connect(App) in connect options.
 +</​code>​
 +expoを使っているとApp.jsがエントリーポイントだった。
 +
 +
 +==== エラー2 ====
 +<​code>​
 +Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/​function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.
 +
 +Check the render method of `App`.
 +</​code>​
 +
 +インポート元を間違っていた…
 +x import {Provider} from '​react-native'​
 +o import {Provider} from '​react-redux'​
 +
 +==== エラー3 ====
 +<​code>​
 +TypeError: Cannot read property '​getState'​ of undefined
 +</​code>​
 +いつの間にかエラーが消えてしまったがProviderとstateあたりが問題だった
 +
 +<​code>​
 +import React from '​react';​
 +import { createStore,​ combineReducers } from '​redux';​
 +import { Provider } from '​react-redux'​
 +import Container from '​./​components/​Container'​
 +import countReducerValue from '​./​reducers/​countReducer'​
 +import nameReducerValue from '​./​reducers/​nameReducer'​
 +
 +
 +const rootReducer = combineReducers({
 +    count: countReducerValue,​
 +    name: nameReducerValue,​
 +  })
 +  ​
 +const store = createStore(rootReducer)
 +
 +
 +export default class App extends React.Component {
 +    render(){
 +        // console.log("​App.render()"​)
 +        // store.subscribe(() => console.log("​xxxx:"​ + store.getState()))
 +        return(
 +             <​Provider store={store}>​
 +                <​Container/>​
 +             </​Provider>​
 +        )
 +    }
 +}
 +
 +</​code>​
reactnative/react-redux.1548774666.txt.gz · 最終更新: 2019/01/30 00:11 by ips