我有,我创建了商店,把它传递给它的子组件的顶级组件,SubscriptionForm
:更新我的商店不会重新渲染我的组件
App.js
import React, { Component } from 'react';
import Navbar from './components/Navbar.js';
import SubscriptionForm from './components/SubscriptionForm.js';
import { createStore } from 'redux'
import rootReducer from './reducers'
const store = createStore(rootReducer)
class App extends Component {
render() {
return (
// Navbar
<div>
<Navbar/>
<SubscriptionForm store={store} />
</div>
);
}
}
export default App;
在我的SubscriptionForm组件,我呈现一个表单,如果用户提交它,我派发一个动作来更新商店。这是我卡住的地方 - 渲染不会再被调用。
import React from 'react';
class SubscriptionForm extends React.Component {
constructor(){
super();
this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit(e) {
e.preventDefault();
this.props.store.dispatch({type: 'SET_SUBSCRIBED'})
//TODO: persist data to db
}
render() {
if(this.props.store.getState().subscription){
return (
<p>Hi</p>
)
}else{
return (
<form onSubmit={this.handleSubmit} className='subscription-form'>
<input type='text' placeholder='email' />
<input type="submit" name="commit" />
</form>
)
}
}
}
export default SubscriptionForm;
减速器/ index.js
import { combineReducers } from 'redux'
const initialSubscription = {
subscribed: false
}
const subscription = (state = initialSubscription, action) => {
switch (action.type) {
case 'SET_SUBSCRIBED':
return true
default:
return state.subscribed
}
}
const rootReducer = combineReducers({
subscription
})
export default rootReducer
是否部件不重新呈现时的成分的变化的状态或道具? (我在哪里去这里?)
真棒,谢谢。在实施它之前,我应该完成其余的redux教程 – Huy