के साथ अपडेट नहीं कर रहा है मुझे रेडक्स-फॉर्म का उपयोग करके आंतरिक फॉर्म फ़ील्ड मानों को सेट करने के साथ कुछ समस्याएं हैं।रेडक्स फॉर्म - प्रारंभिक वैल्यूज
मैं रेडक्स-फॉर्म v6.0.0-rc.3 का उपयोग कर रहा हूं और v15.3.0 प्रतिक्रिया करता हूं।
तो यहां मेरी समस्या है, मेरे पास उपयोगकर्ताओं का ग्रिड है और जब उपयोगकर्ता पंक्ति पर क्लिक किया जाता है, तो मैं एक संपादन उपयोगकर्ता पृष्ठ पर जा रहा हूं और यूआरएल में उपयोगकर्ता आईडी भी शामिल कर रहा हूं। फिर उपयोगकर्ता के संपादन पृष्ठ पर, मैं आईडी को पकड़ रहा हूं और fetchUser (this.props.params.id) को कॉल कर रहा हूं जो एक एक्शन निर्माता है जो this.state.users देता है। मैं तो फोन करके रूपों inital मूल्यों को निर्धारित करने के लिए प्रयास कर रहा हूँ:
function mapStateToProps(state) {
return { initialValues: state.users.user }
}
मेरी समझ से, यह initialValues state.users.user को स्थापित करना चाहिए और जब भी इस राज्य अद्यतन किया जाता है initialValues रूप में अच्छी तरह अद्यतन किया जाना चाहिए। यह मेरे लिए मामला नहीं है। प्रारंभिक वैल्यू पहले उपयोगकर्ता पंक्ति पर क्लिक किए जा रहे हैं (यानी this.state.users.user के लिए पिछली स्थिति)। तो मैं इस परीक्षण करने और इस घटक के लिए एक बटन जोड़ सकते हैं और जब इसकी क्लिक किया मैं fetchUser फिर से एक उपयोगकर्ता आईडी के साथ बोल रहा हूँ मुश्किल में कोडित करने का फैसला किया:
this.props.fetchUser('75e585aa-480b-496a-b852-82a541aa0ca3');
यह सही ढंग से राज्य अपडेट कर रहा है लेकिन initialValues के लिए मान कभी मत बदलना। राज्य अपडेट होने पर अपडेट नहीं हो रहा है। मैंने इस सटीक प्रक्रिया को रेडक्स-फॉर्म के पुराने संस्करण पर परीक्षण किया और यह अपेक्षा के अनुसार काम किया।
क्या मैं यहां कुछ गलत कर रहा हूं या क्या यह संस्करण मैं उपयोग कर रहा हूं।
उपयोगकर्ता प्रपत्र संपादित करें -
class UsersShowForm extends Component {
componentWillMount() {
this.props.fetchUser(this.props.params.id);
}
onSubmit(props){
console.log('submitting');
}
changeUser() {
this.props.fetchUser('75e585aa-480b-496a-b852-82a541aa0ca3');
}
renderTextField(field) {
return (
<TextField
floatingLabelText={field.input.label}
errorText={field.touched && field.error}
fullWidth={true}
{...field.input}
/>)
}
render() {
const { handleSubmit, submitting, pristine } = this.props;
return(
<div>
<form onSubmit={handleSubmit(this.onSubmit.bind(this))} className="mdl-cell mdl-cell--12-col">
<Field name="emailAddress" component={this.renderTextField} label="Email Address"/>
<Field name="firstName" component={this.renderTextField} label="First Name"/>
<Field name="lastName" component={this.renderTextField} label="Last Name"/>
</form>
<RaisedButton onClick={this.changeUser.bind(this)} label="Primary" primary={true} />
</div>
);
}
}
function mapStateToProps(state) {
return { initialValues: state.users.user }
}
UsersShowForm = reduxForm({
form: 'UsersShowForm'
})(UsersShowForm)
UsersShowForm = connect(
mapStateToProps,
actions
)(UsersShowForm)
export default UsersShowForm
उपयोगकर्ता प्रसारण -
import {
FETCH_USERS,
FETCH_USER
} from '../actions/types';
const INITIAL_STATE = { all: [], user: {} };
export default function(state = { INITIAL_STATE }, action) {
switch (action.type) {
case FETCH_USERS:
return {...state, all: action.payload };
case FETCH_USER:
return {...state, user: action.payload };
default:
return state;
}
}
प्रसारण सूचकांक -
import { combineReducers } from 'redux';
import { reducer as formReducer } from 'redux-form';
import usersReducer from './users_reducer';
const rootReducer = combineReducers({
form: formReducer,
users: usersReducer
});
export default rootReducer;
आपका उपयोगकर्ता कम करने तो कोई नाम नहीं है जब आप अपने सूचकांक कम करने में अपनी यह रूप में usersReducer आयात नहीं does not मौजूद में आयात में एक पूरा उदाहरण का पता लगाएं। क्या आप एनपीएम में इसे बनाते समय कोई त्रुटि प्राप्त करते हैं? – Martin
मुझे यकीन नहीं है कि आपका क्या मतलब है। मैं अपने उपयोगकर्ताओं को reducer निर्यात कर रहा हूं और फिर इसे इंडेक्स में आयात कर रहा हूं - आयात उपयोगकर्ताओं को './users_reducer' से रीड्यूसर। मुझे कोई अन्य त्रुटि नहीं मिलती है और मेरा उपयोगकर्ता रेड्यूसर अन्य सभी परिदृश्यों के लिए अपेक्षित काम करता है। –
मेरा मतलब यह है कि जब आप 'निर्यात डिफ़ॉल्ट फ़ंक्शन()' का उपयोग करते हैं तो आप अपने फ़ंक्शन को नाम नहीं देते हैं। मैं इंडेक्स रेड्यूसर का उपयोग करने के लिए 'डिफ़ॉल्ट डिफॉल्ट फ़ंक्शन उपयोगकर्ता रेड्यूसर()' को देखने की अपेक्षा करता हूं – Martin