Как получить значения форм в ручке смены?

  • Ours : Это ветка, в которой вы сейчас находитесь.
  • Их : Это другая ветка, которая используется в вашем

Итак, если вы находитесь на ветке release / 2.5 , и вы объединяете в нее функцию / новые кнопки , затем содержание, найденное в release / 2.5 , относится к ours , и содержимое, найденное на feature / new-buttons , является тем, что относится к. Во время действия слияния это довольно прямолинейно.

Единственная проблема, с которой приходится сталкиваться большинству людей, - это случай переустановки. Если вы делаете повторную базу вместо обычного слияния, роли меняются местами. Как это? Ну, это вызвано исключительно тем, что происходит с перезагрузкой. Подумайте о том, что нужно выполнить эту операцию:

  1. Все ваши действия, сделанные вами после того, как ваше последнее нажатие переместилось на собственную ветвь, назовем ее BranchX .
  2. Вы проверяете головку своей текущей ветви, отбрасывая любые локальные изменения, которые у вас были, но таким образом извлекаете все изменения, которые другие нажали для этой ветви.
  3. Теперь каждая фиксация на BranchX выбрана вишня в порядке от старой до вашей текущей ветви.
  4. BranchX снова удаляется и, следовательно, никогда не появится в любой истории.

Конечно, это не совсем то, что происходит, но для меня это приятная модель ума. И если вы посмотрите на 2 и 3, вы поймете, почему роли теперь меняются местами. Начиная с 2, ваша текущая ветка теперь является ветвью с сервера без каких-либо изменений, поэтому это ours (ветка, в которой вы находитесь). Изменения, которые вы внесли, теперь находятся на другой ветке, которая не является вашей текущей ( BranchX ), и поэтому эти изменения (несмотря на сделанные вами изменения) являются их (другие ветвь, используемая в вашем действии).

Это означает, что если вы слились, и вы хотите, чтобы ваши изменения всегда побеждали, вы бы сказали git, чтобы всегда выбирать «наш», но если вы перебалансируете и хотите, чтобы все ваши изменения всегда выигрывайте, вы говорите git, чтобы всегда выбирать «их».

1
задан bier hier 3 April 2019 в 10:21
поделиться

1 ответ

  1. Вам нужно будет создать кастом input.
  2. Вам нужно будет перехватить и обновить функцию input.onChange редукса.
  3. Необязательно - Если вы хотите, чтобы другие значения формы влияли на это значение, то используйте formSelector reduxForm с connect [116] для доступа к formProps внутри компонента в this.props (приведенный ниже рабочий пример уже включает эту функциональность)

components / CustomInput.js

import React from "react";

const CustomInput = ({
  // we'll intercept redux's "onChange" func, while leaving the other 
  // input props as is in "inputProps"
  input: { onChange, ...inputProps }, 
  // the "handleChange" func below is the parent func that will handle input changes
  handleChange, 
  // "rest" contains any additional properties (className, placeholder, type ...etc)
  ...rest 
}) => (
  // we spread out the "inputProps" and the "rest" of the props, then we add
  // an "onChange" event handler that returns the "event" and the 
  // input's "onChange" func to our "handleChange" parent func
  <input {...inputProps} {...rest} onChange={e => handleChange(e, onChange)} />
);

export default CustomInput;

контейнеров / Form.js

class ControlledFormValue extends PureComponent { 

  // this parent func will handle updates through the "event.target.value"; 
  // the value can be changed/altered and then passed to the input's
  // "onChange" func to update the field
  handleChange = ({ target: { value } }, onChange) => {
    // this will alter the value by adding a "-" after each input update
    onChange(`${value}-`);
    setTimeout(() => console.log(this.props.values), 500);
  };

  render() {
    return (
      <form onSubmit={this.props.handleSubmit}>
        <div>
          <label>First Name</label>
          <div>
            <Field
              className="uk-input"
              name="firstName"
              component={CustomInput}
              type="text"
              placeholder="First Name"
              handleChange={this.handleChange}
            />
          </div>
        </div>
        ...etc
     </form>
    );
  }
}

Рабочий пример : https://codesandbox.io/s/lx1r4yjwy7

0
ответ дан Matt Carlotta 3 April 2019 в 10:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: