私のmapStateToProps
の機能では、idToken
とaccessToken
をstateに格納された値に設定しました。これは、コンポーネントからこれらの値を参照できるようになりました。 mapDispatchToProps
私は自分の行動でこれらの小道具を議論として使用しようとしています。ただし、ownProps
は空のオブジェクトです。なぜそれはidToken
とaccessToken
を持っていないのですか?React-Redux mapDispatchToPropsがmapStateToPropsを受信していません
コンテナ:
import { connect } from 'react-redux'
import { toggleAddQuestionModal, fetchFriends } from '../actions'
import AddQuestionButtonComponent from '../components/AddQuestionButton'
const mapStateToProps = (state) => {
auth = state.auth
return {
idToken: auth.token.idToken,
accessToken: auth.profile.identities[0].accessToken,
}
}
const mapDispatchToProps = (dispatch, ownProps) => {
return {
didPress: (idToken, accessToken) => {
dispatch(toggleAddQuestionModal(true))
dispatch(fetchFriends(ownProps.idToken, ownProps.accessToken))
}
}
}
AddQuestionButton = connect(
mapStateToProps,
mapDispatchToProps
)(AddQuestionButtonComponent)
export default AddQuestionButton
コンポーネント:
'use strict';
import React, {
Text,
View,
TouchableHighlight,
PropTypes,
} from 'react-native'
import styles from './styles'
const AddQuestionButton = ({ didPress, idToken, accessToken }) => (
<TouchableHighlight style={styles.actionButton} onPress={didPress(idToken, accessToken)}>
<Text style={styles.actionButtonText}>+</Text>
</TouchableHighlight>
)
AddQuestionButton.propTypes = {
idToken: PropTypes.string.isRequired,
accessToken: PropTypes.string.isRequired,
didPress: PropTypes.func.isRequired,
}
export default AddQuestionButton
私はownProps
からidToken
とaccessToken
にアクセスできないのはなぜ?これが間違ったパターンの場合、idToken
とaccessToken
にはどのようにアクセスする必要がありますか?
ありがとうございます! mapStateToProps
とmapDispatchToProps
において
ああ、私は、docに 'mergeProps'を見て、それを使用する方法を知らなかった。本当にありがとう! – Cole
すごい!ちょうど私が探していたもの。また、mergePropsがstatePropsを返すようにして、 'return {... ownProps、... stateProps、toggleFollow:()=> dispatch(toggle(id)))}};' – Cristian
@Cristian - niceキャッチ。一定。 –