Итак, если вы находитесь на ветке release / 2.5 , и вы объединяете в нее функцию / новые кнопки , затем содержание, найденное в release / 2.5 , относится к ours , и содержимое, найденное на feature / new-buttons , является тем, что относится к. Во время действия слияния это довольно прямолинейно.
Единственная проблема, с которой приходится сталкиваться большинству людей, - это случай переустановки. Если вы делаете повторную базу вместо обычного слияния, роли меняются местами. Как это? Ну, это вызвано исключительно тем, что происходит с перезагрузкой. Подумайте о том, что нужно выполнить эту операцию:
Конечно, это не совсем то, что происходит, но для меня это приятная модель ума. И если вы посмотрите на 2 и 3, вы поймете, почему роли теперь меняются местами. Начиная с 2, ваша текущая ветка теперь является ветвью с сервера без каких-либо изменений, поэтому это ours (ветка, в которой вы находитесь). Изменения, которые вы внесли, теперь находятся на другой ветке, которая не является вашей текущей ( BranchX ), и поэтому эти изменения (несмотря на сделанные вами изменения) являются их (другие ветвь, используемая в вашем действии).
Это означает, что если вы слились, и вы хотите, чтобы ваши изменения всегда побеждали, вы бы сказали git, чтобы всегда выбирать «наш», но если вы перебалансируете и хотите, чтобы все ваши изменения всегда выигрывайте, вы говорите git, чтобы всегда выбирать «их».
input
. input.onChange
редукса. 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