Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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/3/reactjs/21.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
Javascript 如何从父组件中的子组件呈现函数的jsx_Javascript_Reactjs_Function - Fatal编程技术网

Javascript 如何从父组件中的子组件呈现函数的jsx

Javascript 如何从父组件中的子组件呈现函数的jsx,javascript,reactjs,function,Javascript,Reactjs,Function,我有一个子组件和一个父组件。我在子组件中有一个函数,它返回一些jsx,我想做的是使用该函数返回父组件中相同的jsx,但我无法找到一种方法。我给出了我的最小代码: 父组件: class App extends Component { render() { return ( <div className="App"> <Player ref={instance=>{this.player = instance}} />

我有一个子组件和一个父组件。我在子组件中有一个函数,它返回一些jsx,我想做的是使用该函数返回父组件中相同的jsx,但我无法找到一种方法。我给出了我的最小代码:

父组件:

    class App extends Component {
  render() {
    return (
      <div className="App">
        <Player ref={instance=>{this.player = instance}} />
        {this.player.func('aaa.com','bbb')}
      </div>
    );
  }
}
  export default App;
    import React, { Component } from "react";

class Player extends Component {
  func = (url, label) => {
        return (
            <button onClick={() => this.func(url)}>
                {label}
            </button>
        )
    }
  render() {
    return <div>1</div>;
  }
}
export default Player;
类应用程序扩展组件{
render(){
返回(
{this.player=instance}}/>
{this.player.func('aaa.com','bbb')}
);
}
}
导出默认应用程序;
子组件:

    class App extends Component {
  render() {
    return (
      <div className="App">
        <Player ref={instance=>{this.player = instance}} />
        {this.player.func('aaa.com','bbb')}
      </div>
    );
  }
}
  export default App;
    import React, { Component } from "react";

class Player extends Component {
  func = (url, label) => {
        return (
            <button onClick={() => this.func(url)}>
                {label}
            </button>
        )
    }
  render() {
    return <div>1</div>;
  }
}
export default Player;
import React,{Component}来自“React”;
类播放器扩展组件{
func=(url,标签)=>{
返回(
this.func(url)}>
{label}
)
}
render(){
返回1;
}
}
导出默认播放器;
错误:无法读取未定义的属性“func”

//

注意:我知道我可以通过复制粘贴在父组件中使用jsx,但我正试图找到这样做的方法。我怀疑这是否可能


您可以创建一个
Player
对象,并使用该对象访问函数

new Player().func('aaa.com','bbb')

您可以创建一个
Player
对象,并使用该对象访问函数

new Player().func('aaa.com','bbb')

我不太明白您到底需要什么,但我认为您希望将一些jsx元素从子组件传递到父组件。我们可以做的是在子组件上声明一个propType回调,然后像这样在父组件上实现它

import React from 'react';

class Hello extends React.Component {
  constructor() {
    super();
    this.state = {
      // this state will keep the element returned by the parent
      returnElements: null
    }
    this.onReturn = this.onReturn.bind(this);
  }

  // this method will be fired when the Child component returns callback for onSomethingReturned
  onReturn(element) {
    this.setState({
      returnElements: element
    })
  }
  render () {
    return (
      <div>
        <h1>Hello, React!</h1>
        <Child onSomethingReturned={this.onReturn} />
        {/* I am going to display the state here */}
        {this.state.returnElements}
      </div>
    )
  }
}

class Child extends React.Component {
  constructor(props) {
    super(props);
  }

  componentDidMount() {
    const element = <h3>this is child element</h3>;
    // will call the propType callback function with a element I want to return
    this.props.onSomethingReturned(element);
  }

  render() {
    return (null);
  }
}


export default Hello;
从“React”导入React;
类Hello扩展了React.Component{
构造函数(){
超级();
此.state={
//此状态将保留父级返回的元素
returnElements:null
}
this.onReturn=this.onReturn.bind(this);
}
//当子组件返回onSomethingReturned的回调时,将激发此方法
返回时(元素){
这是我的国家({
返回元素:元素
})
}
渲染(){
返回(
你好,反应!
{/*我将在此处显示状态*/}
{this.state.returnElements}
)
}
}
子类扩展了React.Component{
建造师(道具){
超级(道具);
}
componentDidMount(){
常量元素=这是子元素;
//将使用要返回的元素调用propType回调函数
此.props.onSomethingReturned(元素);
}
render(){
返回(空);
}
}
导出默认Hello;

我不太清楚您到底需要什么,但我认为您希望将一些jsx元素从子组件传递到父组件。我们可以做的是在子组件上声明一个propType回调,然后像这样在父组件上实现它

import React from 'react';

class Hello extends React.Component {
  constructor() {
    super();
    this.state = {
      // this state will keep the element returned by the parent
      returnElements: null
    }
    this.onReturn = this.onReturn.bind(this);
  }

  // this method will be fired when the Child component returns callback for onSomethingReturned
  onReturn(element) {
    this.setState({
      returnElements: element
    })
  }
  render () {
    return (
      <div>
        <h1>Hello, React!</h1>
        <Child onSomethingReturned={this.onReturn} />
        {/* I am going to display the state here */}
        {this.state.returnElements}
      </div>
    )
  }
}

class Child extends React.Component {
  constructor(props) {
    super(props);
  }

  componentDidMount() {
    const element = <h3>this is child element</h3>;
    // will call the propType callback function with a element I want to return
    this.props.onSomethingReturned(element);
  }

  render() {
    return (null);
  }
}


export default Hello;
从“React”导入React;
类Hello扩展了React.Component{
构造函数(){
超级();
此.state={
//此状态将保留父级返回的元素
returnElements:null
}
this.onReturn=this.onReturn.bind(this);
}
//当子组件返回onSomethingReturned的回调时,将激发此方法
返回时(元素){
这是我的国家({
返回元素:元素
})
}
渲染(){
返回(
你好,反应!
{/*我将在此处显示状态*/}
{this.state.returnElements}
)
}
}
子类扩展了React.Component{
建造师(道具){
超级(道具);
}
componentDidMount(){
常量元素=这是子元素;
//将使用要返回的元素调用propType回调函数
此.props.onSomethingReturned(元素);
}
render(){
返回(空);
}
}
导出默认Hello;