Reactjs 如何添加上下文以重新组合';s with handlers()?

Reactjs 如何添加上下文以重新组合';s with handlers()?,reactjs,recompose,Reactjs,Recompose,recompose调用了此函数,允许您在保持组件纯净的同时定义事件处理程序 e、 g.如果你体内有类似的东西render()method: <TextInput value={value} onChange={ev => this.handleChange(ev.target.value)} /> 我对细节做了一些捏造,但假设inputs以输入名称数组的形式出现。e、 g.[“firstName”,“lastName”]将呈现两个文本框,每个文本框一个 我想在我的状态中存储每

recompose
调用了此函数,允许您在保持组件纯净的同时定义事件处理程序

e、 g.如果你体内有类似的东西
render()
method:

<TextInput value={value} onChange={ev => this.handleChange(ev.target.value)} />
我对细节做了一些捏造,但假设
inputs
以输入名称数组的形式出现。e、 g.
[“firstName”,“lastName”]
将呈现两个文本框,每个文本框一个

我想在我的状态中存储每一个的值,但我不想为每一个定义单独的更新程序函数。因此,我需要将一些元数据附加到
onChange={…}
prop,以便知道在我的状态下更新哪个字段

我该怎么做


在我的示例中,我编写了
onChange(input)
并向
withHandlers.onChange
函数添加了一个额外的“级别”来接受额外的参数,但
withHandlers
实际上并不是这样工作的。有什么方法可以做到这一点吗?例如,确保每次呈现
时,每个
TextInput
都接收相同的函数实例?

这是一种典型的情况,您需要直接在TextInput组件中定义更改句柄。
您需要将updateValue函数作为一个道具传递给TextInput组件。

这是一种典型的情况,您需要直接在TextInput组件内部定义更改句柄。
您需要将updateValue函数作为一个道具传递给TextInput组件。

Oh..并将输入名称作为一个单独的道具传递给
TextInput
?我想这可能行得通,但这需要修改每个输入组件才能处理这样的场景。很好的例子!谢谢。哦..然后将输入名称作为单独的道具传递到
TextInput
?我想这可能行得通,但这需要修改每个输入组件才能处理这样的场景。很好的例子!谢谢你。
const enhance = compose(
    withState('values', 'updateValue', ''),
    withHandlers({
        onChange: props => inputName => event => {
            props.updateValue(inputName, event.target.value)
        },
        onSubmit: props => event => {
            event.preventDefault();
            submitForm(props.value)
        }
    })
)

const Form = enhance(({ value, onChange, onSubmit, inputs }) =>
    <form onSubmit={onSubmit}>
        <label>Value
            {inputs.map(input => (
                <TextInput value={value} onChange={onChange(input)} />    
            ))}
        </label>
    </form>
)