我试图将一些信息从子项中的输入字段传递给父项。
到目前为止我所掌握的是:
import React from "react";
import PropTypes from "prop-types";
import Grid from "@material-ui/core/Grid";
import Paper from "@material-ui/core/Paper";
import Typography from "@material-ui/core/Typography";
import { withStyles } from "@material-ui/core/styles";
import TimelineWidget from "./timeline-widget/timeline-widget.component";
import ContainerTable from "./container-table/container-table.component";
import HistoryTable from "./history-table/history-table.component";
import ShippingOverview from "./shipping-overview/shipping-overview.component";
import MapWidget from "./map-widget/map-widget.component";
import styles from "./shippingInformation.style";
class shippingInformation extends React.Component {
constructor() {
super();
this.inputChange = this.inputChange.bind(this);
}
state = {
searchString: null
};
inputChange(input){
this.setState({ searchString: input });
};
render() {
const { classes } = this.props;
return (
<div className={classes.DashboardPageWrapper}>
<Grid item xs={12}>
<Grid container justify="center" spacing={16}>
<Grid
key={1}
item
xs={12}
sm={12}
md={9}
className={classes.Widget}
>
<Typography
variant="subheading"
className={classes.WidgetHeading}
>
Timeline of Container #
</Typography>
<Paper className={classes.WidgetContent}>
<TimelineWidget />
</Paper>
</Grid>
<Grid
key={2}
item
xs={12}
sm={12}
md={3}
className={classes.Widget}
>
<Typography
variant="subheading"
className={classes.WidgetHeading}
>
Shipping Overview
</Typography>
<Paper className={classes.WidgetContent}>
<ShippingOverview />
</Paper>
</Grid>
</Grid>
<Grid container justify="center" spacing={16}>
<Grid item xs={12} sm={12} md={9}>
<Grid container justify="center" spacing={16}>
<Grid key={3} item xs={12} className={classes.Widget}>
<Typography
variant="subheading"
className={classes.WidgetHeading}
>
Containers
</Typography>
<Paper className={classes.WidgetContent}>
<ContainerTable />
</Paper>
</Grid>
<Grid key={4} item xs={12} className={classes.Widget}>
<Typography
variant="subheading"
className={classes.WidgetHeading}
>
Status History
</Typography>
<Paper className={classes.WidgetContent}>
<HistoryTable />
</Paper>
</Grid>
</Grid>
</Grid>
<Grid
key={5}
item
xs={12}
sm={12}
md={3}
className={classes.Widget}
>
<Typography
variant="subheading"
className={classes.WidgetHeading}
>
Latest Position
</Typography>
<Paper className={classes.WidgetContent}>
<MapWidget onShippingOverview={this.inputChange.bind(this)} />
</Paper>
</Grid>
</Grid>
</Grid>
</div>
);
}
}
shippingInformation.propTypes = {
classes: PropTypes.shape({}).isRequired
};
export default withStyles(styles, { withTheme: true })(shippingInformation);
import React from "react";
import PropTypes from "prop-types";
import { withStyles } from "@material-ui/core/styles";
import Typography from "@material-ui/core/Typography";
import TextField from "@material-ui/core/TextField";
import { Bar } from "react-chartjs-2";
import CountUp from "react-countup";
import classNames from "classnames";
import themeStyles from "./shipping-overview.theme.style";
const styles = theme => ({
container: {
display: "flex",
flexWrap: "wrap"
},
textField: {
marginLeft: theme.spacing.unit,
marginRight: theme.spacing.unit,
width: 200
},
menu: {
width: 200
}
});
export class ShippingOverview extends React.Component {
state = {
searchString: null
};
handleChange(event){
this.setState ({ searchString: event.target.value}, () => {
this.props.onShippingOverview(this.state.searchString);
})
// this.props.onShippingOverview(input);
};
render() {
const { classes } = this.props;
return (
<div className={classes["shipping-overview-widget"]}>
<div>
<form className={classes.container} noValidate autoComplete="off">
<TextField
ref="result"
id="full-width"
label="Tracking ID"
InputLabelProps={{
shrink: true
}}
placeholder="Placeholder"
fullWidth
margin="normal"
onChange={this.handleChange.bind(this)}
value={this.state.input}
/>
</form>
</div>
</div>
);
}
}
ShippingOverview.propTypes = {
theme: PropTypes.shape({
palette: PropTypes.shape({
primary: PropTypes.shape({
dark: PropTypes.string,
main: PropTypes.string,
light: PropTypes.string,
contrastText: PropTypes.string
}),
secondary: PropTypes.shape({
main: PropTypes.string
}),
common: PropTypes.shape({
white: PropTypes.string
})
})
}).isRequired,
classes: PropTypes.shape({}).isRequired
};
export default withStyles(themeStyles, { withTheme: true })(ShippingOverview);
34 this.setstate({searchstring:event.target.value},()=>{
>35 this.props.onchild(this.state.SearchString);
希望有人能帮忙。顺便说一句,我是个小人...
您在父组件中使用了错误的组件。您的子组件是作为ShippingoverView
导入的,但您使用的是MapWidget
。更改为ShippingoverView
,它就可以工作了。
<ShippingOverview onShippingOverview={this.inputChange} />
问题内容: 通过回调函数将数据从子级传递到父级组件,但是不起作用。我在这里做错了什么?将数据从子级传递到父级组件-反应-通过回调函数 https://codepen.io/silentarrowz/pen/GEMQEP?editors=0010 这是代码 问题答案: 有几个问题。 1)你必须绑定 2)是异步的,因此不能保证在传递给时将其设置为所需的值。你可以做 要么 解决该问题。
问题内容: 我有两个组成部分: 第一个是父组件,它是通常的React组件。 第二个是孩子,它是功能组件。 我想将 Titles 的值(处于子状态)传递给父Component。这是我的 子组件 代码: 这是我的 父组件 : 这看起来很容易,但这是我第一次使用功能组件。你能帮我吗 ? 问题答案: React就是关于在组件树中向下流动的数据。如果您希望能够显示和/或修改彼此之间的共享状态,则应提升状态并
我50%的希望渺茫:P.我(一开始)试图从一个线程的代码中更新GUI,但得到了NullException。在阅读了一段时间后,我了解到线程淹没了JavaFX应用程序窗口,为了从线程更新GUI,我需要使用以下代码: 所以我确实使用了这个代码,它确实允许我编辑我的主类的图形用户界面。不过,我的问题很简单。= 如何将父级的public void run()中的参数传递给这个?。例如,字符串tmpStri
问题内容: 在我正在从事的新项目中,我开始使用组件而不是指令。 但是,我遇到一个无法找到具体标准方法的问题。 从孩子向父母通知事件很容易,您可以在下面的我的plunkr上找到它,但是从父母向孩子通知事件的正确方法是什么? Angular2似乎通过使用以下方法解决了此问题:https ://angular.io/docs/ts/latest/cookbook/component-communicat
我有一个如下所示的graphql查询: 因此,名称和电子邮件将由名为详细信息的其余endpoint解析,但是地址字段需要由另一个名为地址的其余endpoint解析。>rest终结点还需要在中传递的(因为我的rest服务需要该字段)。我不确定,在这种情况下,我如何设计我的解析器? 同样,一个字段一旦解析,是否可以将数据发送到另一个字段?这在grapqhql中可能吗?
问题内容: 没有参数 带参数 我想得到。我怎么才能得到它? 问题答案: 试试这个: 并在您的职能: