React native “a”的更新值;“字段”;基于不同屏幕上的一些选择 问题:

React native “a”的更新值;“字段”;基于不同屏幕上的一些选择 问题:,react-native,redux-form,react-native-navigation,React Native,Redux Form,React Native Navigation,我试图根据与字段所在屏幕不同的屏幕上的某些选择更新redux表单字段的值 我正在做的是: 1) 显示带有可触摸不透明度的窗体。它具有下拉列表的样式(这是registeredField) 2) 单击该按钮,您将被重定向到列表视图 3) 单击列表中的一项 4) 您被重定向回 5) 占位符应更改为上一屏幕上的选择 发生的情况是: 如果我直接点击下拉菜单(可触摸不透明度按钮)并返回,该值不会得到更新。但是,只要我更改了任何其他字段的输入,标签就会立即更改。如果我在一个其他输入中有一些内容,然后我进行选

我试图根据与字段所在屏幕不同的屏幕上的某些选择更新redux表单字段的值

我正在做的是:

1) 显示带有
可触摸不透明度的窗体
。它具有下拉列表的样式(这是
registeredField

2) 单击该按钮,您将被重定向到列表视图

3) 单击列表中的一项

4) 您被重定向回

5) 占位符应更改为上一屏幕上的选择


发生的情况是:

如果我直接点击下拉菜单(可触摸不透明度按钮)并返回,该值不会得到更新。但是,只要我更改了任何其他字段的输入,标签就会立即更改。如果我在一个其他输入中有一些内容,然后我进行选择,那么同样的方法也会起作用——标签会按预期发生变化

我的尝试: 要显示标签,我正在准备一个
initialValues
对象,并将其传递给呈现表单的组件,以便正确显示标签:

字段组件: 容器中传递
initialvalues
属性的表单:
我使用了
initialValues
prop,以便选择器在选择时显示正确的标签,并在屏幕更改时正确加载和保存表单

我有一个保存表单值和设置组名的操作:

import { pathOr } from 'ramda';
import { createStructuredSelector } from 'reselect';
import {
  initialState,
  SAVE_FORM_VALUES,
  SET_GROUP_NAME,
  CLEAR_GROUP_NAME,
  CLEAR_FORM_VALUES,
} from './usermanagementform.constants';

export const userManagementFormSelector = createStructuredSelector({
  subhaulerPhone: pathOr('', ['userManagementForm', 'subhaulerPhone']),
  subhaulerEmail: pathOr('', ['userManagementForm', 'subhaulerEmail']),
  groupName: pathOr('', ['userManagementForm', 'groupName']),
  subhaulerFormValues: pathOr({}, ['form', 'driverForm', 'values']),
});

export const userManagementFormReducer = (state = initialState, action) => {
  switch (action.type) {
    case SAVE_FORM_VALUES:
      return {
        ...state,
        ...action.data,
      };
    case CLEAR_FORM_VALUES:
      return {
        subhaulerPhone: '',
        subhaulerEmail: '',
        groupName: '',
      };
    case SET_GROUP_NAME:
      return {
        ...state,
        groupName: action.groupName,
      };
    case CLEAR_GROUP_NAME:
      return {
        ...state,
        groupName: '',
      };
    default:
      return state;
  }
};

到目前为止,我所有的尝试都是徒劳的。这是一个边缘案例,我似乎无法理解为什么这不起作用或者什么不起作用

任何帮助都将不胜感激

谢谢

使用的资源:

<Field
    name="groupName"
    placeholder="Group"
    groupPicker // to render the picker or a normal input box
    groupName={groupName} // the value used as placeholder
    openGroupPicker={openGroupPicker}
    component={FormInput}
 />
 ....
 const connectedDriverForm = reduxForm({
    form: 'driverForm',
    validate,
    enableReinitialize: true,
 })(DriverForm);
const {
  subhaulerPhone,
  subhaulerEmail,
  groupName,
} = this.props;
const initialValues = {
  subhaulerPhone,
  subhaulerEmail,
  groupName,
};
// within render()
<DriverForm
    initialValues={initialValues}
    openGroupPicker={this.handleOpenGroupPicker}
    onDriverFormSubmit={this.handleDriverFormSubmit}
    onCancel={this.closeDriverForm}
/>
export default connect(
  mapStateToProps,
  {
    ...mapDispatchToProps,
    saveGroupName: groupName => change('driverForm', 'groupName', groupName),
  },
)(UserManagementForm);
import { pathOr } from 'ramda';
import { createStructuredSelector } from 'reselect';
import {
  initialState,
  SAVE_FORM_VALUES,
  SET_GROUP_NAME,
  CLEAR_GROUP_NAME,
  CLEAR_FORM_VALUES,
} from './usermanagementform.constants';

export const userManagementFormSelector = createStructuredSelector({
  subhaulerPhone: pathOr('', ['userManagementForm', 'subhaulerPhone']),
  subhaulerEmail: pathOr('', ['userManagementForm', 'subhaulerEmail']),
  groupName: pathOr('', ['userManagementForm', 'groupName']),
  subhaulerFormValues: pathOr({}, ['form', 'driverForm', 'values']),
});

export const userManagementFormReducer = (state = initialState, action) => {
  switch (action.type) {
    case SAVE_FORM_VALUES:
      return {
        ...state,
        ...action.data,
      };
    case CLEAR_FORM_VALUES:
      return {
        subhaulerPhone: '',
        subhaulerEmail: '',
        groupName: '',
      };
    case SET_GROUP_NAME:
      return {
        ...state,
        groupName: action.groupName,
      };
    case CLEAR_GROUP_NAME:
      return {
        ...state,
        groupName: '',
      };
    default:
      return state;
  }
};