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")
);