react 组件怎么公用_如何从react组件中提取公共逻辑(但公共逻辑使用setState)

我正在用react构建一个应用程序。我已经使用react 2.5年了,但这是我第一次真正开始测试。因此,我从组件中删除了同样多的逻辑。这其中的大部分非常简单,因为对于大多数逻辑来说,用纯函数来思考是很容易的。

问题

我发现自己在不同的组件中重用了一个特定的方法,因为它是我的输入字段处理程序。在我第三次复制粘贴之后,我想一定有一个更干净的解决方案。

此函数当前以完全相同的方式存在于我的3个组件中

/**

* @description

* Returns a function that updates the state form

*

* @param {String} stateKey - key in the state to update

* @returns {Function}

*/

@autobind

updateInputValue (prop) {

return (event) => {

this.setState({ [prop]: event.target.value });

}

};

我试过的

this

对它来说就像一个变量,它起作用了,但我想知道是否有一个更干净的方法来做它。

/**

* @description

* Returns a function that updates the state of the filter form

*

* @param {Object} componentThis - The components context

* @param {String} stateKey - key in the state to update

* @returns {Function}

*/

function updateInputValue (componentThis, stateKey) {

return (event) => {

componentThis.setState({ [stateKey]: event.target.value });

}

}

然后在输入中

value={this.state.foo}

onChange={updateInputValue(this, 'foo')} />

我想知道这个问题是否还有其他解决方案?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值