Javascript 如何从onClick侦听器返回表单?
我有一个带有onClick按钮的react应用程序。其中一个组件的简单版本如下所示:Javascript 如何从onClick侦听器返回表单?,javascript,reactjs,Javascript,Reactjs,我有一个带有onClick按钮的react应用程序。其中一个组件的简单版本如下所示: export const Filters= props=>{ return( </div> <button onClick={AddReview()}> Add review </button> </div> ) } expor
export const Filters= props=>{
return(
</div>
<button
onClick={AddReview()}>
Add review
</button>
</div>
)
}
export const Filters=props=>{
返回(
添加评论
)
}
带有事件hendler的组件如下所示:
export default function AddReview() {
return (
<div className="filter" style={{ margin: "300 px"}}>
<h2>Board</h2>
<Form>
<FormGroup>
<Label for="player">Player</Label>
<Input name="player" placeholder="Ex: Player 1"></Input>
</FormGroup>
</Form>
</div>
);
}
导出默认函数AddReview(){
返回(
董事会
玩家
);
}
因此,我的任务是从事件处理程序onClick返回表单,但我面临警告:
预期onClick listener是函数,但得到的是对象类型的值
我怎样才能避免这个问题?谢谢大家! 事件处理程序是一个不能返回任何内容的
void
函数。您希望向组件添加一个状态
,该状态告诉您是否显示AddReview
组件
const [isAddingReview, setIsAddingReview] = useState(false);
在事件处理程序中,更新此状态
onClick={() => setIsAddingReview(true)}
然后,仅当isAddingReview
为true
时,才有条件地呈现AddReview
组件
这里我显示了一个“AddReview”按钮,当它是false
时,它是AddReview
组件,当它是true
时。可能有一些回调函数要作为道具传递给AddReview
。例如,我们可以传递一个函数来关闭表单,您可以在提交表单时在AddReview
内调用该函数
export const Filters = () => {
const [isAddingReview, setIsAddingReview] = useState(false);
return(
<div>
{isAddingReview
? // when true
<AddReview
close={() => setIsAddingReview(false)}
/>
: // when false
<button
onClick={() => setIsAddingReview(true)}
>
Add review
</button>
}
</div>
)
}
export const Filters=()=>{
const[isAddingReview,setIsAddingReview]=useState(false);
返回(
{isAddingReview
?//当为true时
setIsAddingReview(假)}
/>
://当为false时
setIsAddingReview(真)}
>
添加评论
}
)
}
您正在调用onClick
侦听器(AddReview()
)中的函数。这意味着该函数的返回值将放在大括号{}
之间。从函数引用中删除括号()
。除此之外,每当调用AddReview
时,您希望发生什么?它是一个组件,而不是您应该运行的函数。事件处理程序onClick返回的表单是什么意思?您的过滤器
组件有一个调用AddReview
的按钮,AddReview
组件有一个带有classfilter
的div。。。这太令人困惑了…非常感谢你的帮助!