react-redux里@connect為什么可以直接拿到對象里的屬性,而connect(mapStateToProps, mapDispatchToProps)(App)必須要手動才能拿到對象里的屬性?比如:const initialState = {
isAuth: false,
username: 'ok'
}
export function auth(state=initialState, action){
...
}@connect(
state => state.auth
)class App extends Component{
render(){ return(
{this.props.isAuth ? '<button></button>' : ''}
...
)
}
}在這里使用裝飾器的寫法,可以直接拿到isAuth.但是改成mapStateToProps要拿到isAuth就必須換成這種寫法:const mapStateToProps = state => {
return{
isAuth: state.auth.isAuth
}
}
下面這種寫法拿不到isAuth,
const mapStateToProps = state => {
return{
auth: state.auth
}
}
在組件中加上this.props.auth.isAuth才能對isAuth進行判斷問題是@connect對auth這個對象做了什么,讓我們不用寫isAuth: state.auth.isAuth就可以拿到isAuth?
1 回答

函數式編程
TA貢獻1807條經驗 獲得超9個贊
@connect( state => state.auth )
@connect
接受一個函數作為參數,將這個函數的返回值對象展開傳給組件,即作為組件的props
添加回答
舉報
0/150
提交
取消