передаю метод без аргумента onBlur={this.handleChange}
стоит мне изменить на onBlur={this.handleChange('title')}
onBlur={() => this.handleChange('title')}
. Или вместо передачи значения в качестве параметра добавляйте его элементу как атрибут, а в обработчике события считывайте:onBlur={this.handleChange} data-change-param="title"
handleChange = (e) => {
const changeParam = e.target.getAttribute('data-change-param');
...
class Child extends Component {
render() {
const { handleChange } = this.props;
return (
<Wrapper>
<SomeInput onChange={handleChange} />
</Wrapper>
);
}
}
handleChange = e => {
const { name, value } = this.props;
this.setState({ [name]: value }, this.calculate);
};
class Parent extends React.Component {
state = {
inputFoo: '',
inputBaz: ''
};
handleChangeInput = (inputName, value) => {
this.setState({
[inputName]: value
})
}
render() {
const { inputFoo, inputBaz } = this.state;
return (
<div>
<Children1
inputFoo={inputFoo}
inputBaz={inputBaz}
onChangeInput={this.handleChangeInput}
/>
<Children2
inputFoo={inputFoo}
inputBaz={inputBaz}
/>
</div>
);
}
}
class Chidlren1 extends React.Component {
handleInputChange = event => {
const {name, value} = event.target
this.props.onChangeInput(name, value);
}
render() {
const { inputFoo, inputBaz } = this.props;
return (
<div>
<input
type="text"
name="inputFoo"
value={inputFoo}
onChange={this.handleChangeInput}
/>
<input
type="text"
name="inputBaz"
value={inputBaz}
onChange={this.handleChangeInput}
/>
</div>
);
}
}
_.filter([{a: 'b', c: 'd'}, {a: 'b', k: 'p'}, {a: 'c', l: 'p'}], {a: 'b'}) // outputs [{a: 'b', c: 'd'}, {a: 'b', k: 'p'}]
Содержимое строки в JavaScript нельзя изменять. Нельзя взять символ посередине и заменить его. Как только строка создана – она такая навсегда.
Можно лишь создать целиком новую строку и присвоить в переменную вместо старой, например:
Я знаю, что const \ let неизменяемые, но можно изменить свойство.