高次コンポーネントを介して管理される制御された入力を持つフォームがあります。構造は次のようになります。
フィールド高次成分
function BaseField(WrappedComponent) {
class WrappedField extends React.Component {
constructor(props) {
super(props);
this.state = {
value: '',
active: false,
}
}
setValue = (e) => {
this.setState({ value: e.target.value })
}
...
<WrappedComponent
{...this.props}
value={this.state.value}
set={this.setValue}
active={this.state.active}
/>
....
分野
import React from 'react';
import BaseField from './BaseField';
const TextField = (props) => {
return <input
value={props.value}
onChange={props.set}
name={props.name}
type={props.type}
/>
}
export default BaseField(TextField);
これを使用TextField
するとうまく機能しますが、より柔軟に使用したいのですが、たとえば、onChange
場合によっては機能を強化して、常に状態を設定するだけでなく、状態に基づいて他のことを実行できるようにしたいと考えています。が使用されているコンポーネント内のまたは関数TextField
。
HOC の仕組みを誤解していますか?