来自 child 组件的反应更改状态不起作用
React change state from child component not working
经过研究我找不到办法做到这一点,我想念一个小东西,或者不是。
我必须将 child 组件的状态更改为 false
但这不起作用,真正的问题是我不知道为什么。
要显示 child 并隐藏主要内容,我正在做这个工作
that = this;
$('#example tbody').on('click', '.btnListEdit', function () {
var data = table.row($(this).closest('tr')).data();
that.setState({
edit: true
});
});
这是我的主要 React 组件
public render(): React.ReactElement<ICertificatesListProps> {
return (
<div>
{
this.state.tableItems.length === 0 ?
(
<LinearProgress />
) : (
<div>
{
this.state.edit ?
(
<EditCert description={undefined} context={this.props.context} myprops={this.state} handler={this.handlerFilters} />
) : (
我正在传递我的“myprops”以在 child 组件
下方的这个组件中触发 Handle
handlerFilters() {
this.setState({
edit: false
});
}
我的child组件
import * as React from 'react';
export const EditCert = (myprops) => {
function ExitHandler() {
myprops.handleFilters();
}
return (
<div>
<Select
labelId="selPrintedLabel"
id="selPrinted"
label="Printed"
fullWidth={true}
variant="outlined"
// value={this.state.selectYesNo}
// defaultValue={this.state.selectYesNo}
// onChange={e => this.setState({ selectYesNo: typeof e.target.value === 'string' ? e.target.value : '' })}
>
<MenuItem value="">
<em>All</em>
</MenuItem>
<MenuItem value={"1"}>Yes</MenuItem>
<MenuItem value={"0"}>No</MenuItem>
</Select>
<Button onClick={ExitHandler} size="small" style={{ "width": "100%" }} id="fireModal" variant="contained" >Certificate labels</Button>
</div>
);
}
child 的处理程序不会将状态触发为 false 以在主程序中隐藏我的 child。
请提供任何知识
我想 EditCert 是您的子组件。如果是,那么您的问题是您将 handlerFilters 函数作为处理程序传递给子组件,但在子组件中您正试图通过 handlerFilters 访问它。
它应该是这样的:
function ExitHandler() {
myprops.handler();
}
另外注意有错别字,一开始你写的是handlerFilters,在child你写的是handleFilters。
经过研究我找不到办法做到这一点,我想念一个小东西,或者不是。
我必须将 child 组件的状态更改为 false
但这不起作用,真正的问题是我不知道为什么。
要显示 child 并隐藏主要内容,我正在做这个工作
that = this;
$('#example tbody').on('click', '.btnListEdit', function () {
var data = table.row($(this).closest('tr')).data();
that.setState({
edit: true
});
});
这是我的主要 React 组件
public render(): React.ReactElement<ICertificatesListProps> {
return (
<div>
{
this.state.tableItems.length === 0 ?
(
<LinearProgress />
) : (
<div>
{
this.state.edit ?
(
<EditCert description={undefined} context={this.props.context} myprops={this.state} handler={this.handlerFilters} />
) : (
我正在传递我的“myprops”以在 child 组件
下方的这个组件中触发 Handle handlerFilters() {
this.setState({
edit: false
});
}
我的child组件
import * as React from 'react';
export const EditCert = (myprops) => {
function ExitHandler() {
myprops.handleFilters();
}
return (
<div>
<Select
labelId="selPrintedLabel"
id="selPrinted"
label="Printed"
fullWidth={true}
variant="outlined"
// value={this.state.selectYesNo}
// defaultValue={this.state.selectYesNo}
// onChange={e => this.setState({ selectYesNo: typeof e.target.value === 'string' ? e.target.value : '' })}
>
<MenuItem value="">
<em>All</em>
</MenuItem>
<MenuItem value={"1"}>Yes</MenuItem>
<MenuItem value={"0"}>No</MenuItem>
</Select>
<Button onClick={ExitHandler} size="small" style={{ "width": "100%" }} id="fireModal" variant="contained" >Certificate labels</Button>
</div>
);
}
child 的处理程序不会将状态触发为 false 以在主程序中隐藏我的 child。
请提供任何知识
我想 EditCert 是您的子组件。如果是,那么您的问题是您将 handlerFilters 函数作为处理程序传递给子组件,但在子组件中您正试图通过 handlerFilters 访问它。
它应该是这样的:
function ExitHandler() {
myprops.handler();
}
另外注意有错别字,一开始你写的是handlerFilters,在child你写的是handleFilters。