Ich habe zwei Container StatedUser
und StatedHeader
. Das ist Verbindung mit Komponente User
und Header
Beide erhalten state.user
als Requisiten. Nach einigen Aktionen ändern state.user
, Komponente Benutzer props.user
ändert, aber Header nicht.mapStateToProps aufgerufen, aber Komponenten Requisiten nicht ändern?
Hier ist mein Code container StatedHeader
import Header from '../components/common/Header'
import {connect} from 'react-redux'
import {showConfirm} from '../actions'
const mapStateToProps = state => {
console.log(`header user --> ${JSON.stringify(state.user)}`)
return {
user: state.user,
headerFix: state.headerFix
}
}
const mapDispatchToProps = dispatch => {
return {
openSignoutDialog:() => {
dispatch(showConfirm(true))
}
}
}
const StatedHeader = connect(
mapStateToProps,
mapDispatchToProps)(Header)
export default StatedHeader
------------------------------ bearbeiten --- ----------------------------------
const initialState = {
user: {},
displayFlag: false,
headerFix: false
}
function blogApp (state, action) {
if (typeof(state) === 'undefined') {
return initialState
}
switch(action.type) {
case 'SIGN_IN':
return Object.assign({}, state, {user: action.user})
// update user what i mentioned in the question
case 'UPDATE_AVATAR':
return Object.assign({}, state, {user: action.user})
case 'SIGN_OUT':
return Object.assign({}, state, {user: {}})
case 'SHOW_CONFIRM':
return Object.assign({}, state, {displayFlag: action.displayFlag})
case 'HEADER_FIX':
return Object.assign({}, state, {headerFix: action.headerFix})
default:
return state
}
}
export default blogApp
By the way, Ergebnis console.log
festgestellt, dass state.user
hat sich wie erwartet geändert, aber die Requisiten der Komponenten haben sich nicht geändert.
Übrigens, meine Reac-Redux-Version ist V5.0.5 irgendwelche Ideen darüber? Vielen Dank!
Wie greifen Sie auf "Benutzer" Prop in Header-Komponente? – Dev
@Dev, ich erstelle nur eine Klasse 'Header' und benutze' this.props.user', Listening at 'componentWillReceiveProps', die nie nach init aufgerufen wird. – rookiect
Ich nehme an, Sie haben Header anstelle von StatedHeader als Container-Komponente verwendet, wenn nicht, dann würde ich mehr brauchen, um das Problem zu analysieren. Wie Sie sagen, erhalten Sie Benutzerdaten in mapStateToProps, sollte die Header-Komponente aktualisieren. – Dev