Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.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 警告:函数作为子函数无效。反应_Javascript_Html_Node.js_Reactjs - Fatal编程技术网

Javascript 警告:函数作为子函数无效。反应

Javascript 警告:函数作为子函数无效。反应,javascript,html,node.js,reactjs,Javascript,Html,Node.js,Reactjs,我的“董事会”课程有问题。我一直在到处寻找解决办法,但似乎解决不了。请告诉我我做错了什么 错误消息为:警告:函数作为子函数无效。如果返回组件而不是从渲染返回组件,则可能会发生这种情况。或者您可能想调用此函数而不是返回它 class Test extends Component { state = { editing: false }; edit = () => { this.setState({ editing: true }); }; remove

我的“董事会”课程有问题。我一直在到处寻找解决办法,但似乎解决不了。请告诉我我做错了什么

错误消息为:警告:函数作为子函数无效。如果返回组件而不是从渲染返回组件,则可能会发生这种情况。或者您可能想调用此函数而不是返回它

class Test extends Component {
  state = {
    editing: false
  };

  edit = () => {
    this.setState({ editing: true });
  };

  remove() {
    alert("removing");
  }
  save = () => {
    var val = this.refs.editedtext.value;
    console.log(val);
    this.setState({ editing: false });
  };

  RenderNormal = () => {
    return (
      <div className="commentContainer">
        <div className="commentText" style={{ fontSize: "100px" }}>
          {this.props.children}
        </div>
        <button onClick={this.edit} className="btn btn-primary">
          Edit
        </button>
        <button onClick={this.remove} className="btn btn-danger">
          Delete
        </button>
      </div>
    );
  };
  RenderForm = () => {
    return (
      <div className="commentContainer">
        <textarea
          ref="editedtext"
          defaultValue={this.props.children}
        ></textarea>
        <button onClick={this.save} className="btn btn-danger">
          Save
        </button>
      </div>
    );
  };
  render() {
    if (this.state.editing) {
      return this.RenderForm;
    } else return this.RenderNormal;
  }
}

**class Board extends Component {
  state = {
    comments: ["Comment1", "Comment2", "Comment3"]
  };
  render = () => {
    return (
      <div>
        {
          (this.state.comments.map = (text, i) => {
            return <Test key={i}>{text}</Test>;
          })
        }
      </div>
    );
  };
}**

export { Test, Board };
类测试扩展组件{
状态={
编辑:假
};
编辑=()=>{
this.setState({editing:true});
};
删除(){
警报(“移除”);
}
保存=()=>{
var val=this.refs.editedtext.value;
控制台日志(val);
this.setState({editing:false});
};
RenderNormal=()=>{
返回(
{this.props.children}
编辑
删除
);
};
RenderForm=()=>{
返回(
拯救
);
};
render(){
if(this.state.editing){
返回此.RenderForm;
}否则返回此.RenderNormal;
}
}
**类板扩展组件{
状态={
评论:[“评论1”、“评论2”、“评论3”]
};
渲染=()=>{
返回(
{
(this.state.comments.map=(text,i)=>{
返回{text};
})
}
);
};
}**
导出{Test,Board};
Index.JS:
ReactDOM.render(
,
document.getElementById(“应用程序”)
);
render(){
if(this.state.editing){
返回此.RenderForm;
}否则返回此.RenderNormal;
}

render
函数中,您将返回两个函数中的一个,而不是调用它们的结果。如果您只需在
RenderForm
renderformal
的末尾添加括号(即,
返回此.RenderForm();
它应该可以正常工作,因为您将返回调用函数的结果。

(this.state.comments.map=(text,i)=>{
删除
=
(this.state.comments.map>)(text,i)=>{
@NicholasTower,它现在给了我这个错误。/src/App.js第70:47行:解析错误:意外标记,应为“,”我忽略了括号是错误的。
this.state.comments.map((text,i)=>{
非常感谢@NicholasTower,你的解决方案和Ian的解决方案解决了我的问题。我这样做了,但它并没有真正改变任何东西。我从来没有遇到过任何问题,没有括号的情况下渲染第一个类,只有第二个类有映射,我在Wait scratch中遇到了一个问题,你修复了两个错误中的一个这个问题,非常感谢!
Index.JS:
ReactDOM.render(
  <div>
    <Board />
  </div>,
  document.getElementById("app")
);