Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 扩展一个组件以在另一个组件中创建逻辑_Reactjs - Fatal编程技术网

Reactjs 扩展一个组件以在另一个组件中创建逻辑

Reactjs 扩展一个组件以在另一个组件中创建逻辑,reactjs,Reactjs,我有一个有一些逻辑的组件,我想要一个没有逻辑的组件。我想构建一个没有任何逻辑的纯组件,我想扩展这个组件来放置原始逻辑,这样我就可以使用带有原始逻辑的组件或者没有任何逻辑的组件。就像我需要组件的一个子集,我不想复制。我想提取差异,这样我就可以为您提供完整的组件或只是其中的一部分 除了将没有逻辑的lhe组件视为具有逻辑的组件的子组件之外,我还可以在react中执行此操作吗?做这件事最好的方式是什么?我不认为这是一个临时问题。我想这种方法可以帮助您: const TextElement=(道具)=>(

我有一个有一些逻辑的组件,我想要一个没有逻辑的组件。我想构建一个没有任何逻辑的纯组件,我想扩展这个组件来放置原始逻辑,这样我就可以使用带有原始逻辑的组件或者没有任何逻辑的组件。就像我需要组件的一个子集,我不想复制。我想提取差异,这样我就可以为您提供完整的组件或只是其中的一部分


除了将没有逻辑的lhe组件视为具有逻辑的组件的子组件之外,我还可以在react中执行此操作吗?做这件事最好的方式是什么?我不认为这是一个临时问题。

我想这种方法可以帮助您:

const TextElement=(道具)=>(
);
const TextAreaElement=(道具)=>(
);
让Mixing=InnerComponent=>类扩展React.Component{
建造师(道具){
超级(道具);
this.state={value:''}
this.\u handleChange=this.\u handleChange.bind(this);
}
_手变(e){
常量值=e.target.value;
this.setState({value:value});
}
render(){
返回()
}
};
常量MyTextComponent=混合(TextElement);
const MyTextAreaComponent=混合(TextAreaElement);
ReactDOM.render(
,
document.getElementById('容器')
);

你好,谢谢你的回答,但这不是我想要的。这更像是HOC,我不想这样。让我试着更好地解释。考虑一个选项卡组件。我想要一个选项卡组件,它的逻辑是更改活动选项卡,但它不在选项卡组件内。但是我想要一个管理这个活动选项卡的组件,在没有逻辑的情况下扩展这个原始选项卡组件。所以我可以使用原始组件,或者使用逻辑组件?我说得更清楚了吗?
const TextElement = (props) => (
        <input type="text"            
               defaultValue={props.value}
               onChange={props.handleChange}
               placeholder={props.placeholder}/>
);

const TextAreaElement = (props) => (
        <textarea             
               defaultValue={props.value}
               onChange={props.handleChange}
               placeholder={props.placeholder}/>

);

let Mixing = InnerComponent => class extends React.Component {
  constructor(props) {
    super(props);
    this.state = { value :''}
    this._handleChange = this._handleChange.bind(this);
  }

  _handleChange(e) {
    const value = e.target.value;
    this.setState({value:value});
  }

  render(){
    return(<InnerComponent value={this.state.value} handleChange={this._handleChange} />)
  }

};

const MyTextComponent = Mixing(TextElement);
const MyTextAreaComponent = Mixing(TextAreaElement);



ReactDOM.render(
  <MyTextComponent  />,
  document.getElementById('container')
);