我是React和Redux的新手。我試圖創建一個功能,讓您在兩個團隊之間進行選擇(onPress),然後顯示下一個視圖/組件(默認情況下會隱藏)。React REDX - 如何將狀態傳遞到組件
我創建:
- index.ios.js - 包含商店
- 下注view.js - 實際的組件
- pickPartyActions - 我定義的一些動作
- pickPartyReducers - 我指定狀態如何變化
reducer正確返回新的狀態。我想用這個新狀態及其屬性來執行下一個操作。
首先 - 如何使用/將新狀態(及其屬性)從reducer傳遞到另一個視圖或組件?
<View>
<Text>Set Bet Amount</Text>
</View>
第二 - 如何隱藏該視圖並僅在onPress操作後顯示/顯示它?
index.ios.js
import React, { Component } from 'react';
import {
AppRegistry,
NavigatorIOS
} from 'react-native';
import { createStore } from 'redux'
import BetView from './app/components/bet-view'
import reducers from './app/reducers/'
const store = createStore(reducers)
export default store
store.subscribe(() => {
console.log(store.getState())
})
class testProject extends Component {
render() {
return (
<NavigatorIOS
initialRoute={{
component: BetView,
title: 'Bet view',
index: 0
}}
/>
);
}
}
AppRegistry.registerComponent('testProject',() => testProject);
賭注視圖
import React from 'react'
import {
View,
Text,
TouchableHighlight,
} from 'react-native'
import store from '../../index.ios'
import pickPartyActions from '../actions/pickPartyActions'
import pickPartyReducer from '../reducers/pickPartyReducer'
const BetView = ({navigator, parties}) =>
<View>
<Text>{parties[0]} vs {parties[1]}</Text>
<View>
<TouchableHighlight onPress={() => store.dispatch(pickPartyActions(partyType='left', name=parties[0], status='active', left='active', right='inactive'))}>
<Text>Left</Text>
</TouchableHighlight>
<TouchableHighlight onPress={() => store.dispatch(pickPartyActions(partyType='right', name=parties[1], status='active', left='inactive', right='active'))}>
<Text>Right</Text>
</TouchableHighlight>
</View>
<View>
<Text>Set Bet Amount</Text>
</View>
</View>
export default BetView
操作
const pickPartyActions = (partyType, name, status, left, right) => {
switch (partyType) {
case 'left': {
return {
type: 'PICK_LEFT_PARTY',
name,
status,
left,
right,
}
}
case 'right': {
return {
type: 'PICK_RIGHT_PARTY',
name,
status,
left,
right,
}
}
}
}
export default pickPartyActions
減速
import pickPartyActions from '../actions/pickPartyActions'
const initialState = {
name: '',
status: 'inactive',
left: 'inactive',
right: 'inactive',
}
const pickPartyReducer = (state=initialState, action) => {
switch (action.type) {
case 'PICK_LEFT_PARTY': {
return {
...state,
name: action.name,
status: action.status,
left: action.left,
right: action.right,
}
}
case 'PICK_RIGHT_PARTY': {
return {
...state,
name: action.name,
status: action.status,
left: action.left,
right: action.right,
}
}
default:
return state;
}
}
export default pickPartyReducer
@Pachu你好這是正確的,我說的是 你可以在這裏閱讀更多關於從redux狀態傳遞信息到我的組件。在這個例子中,組件是同一頁面上的另一個視圖(Bet view view),但理想情況下它將擁有自己的文件。 – John