【发布时间】:2019-02-16 19:48:58
【问题描述】:
我正在使用流并从另一个组件传递状态。我正在使用 proptypes 和 statetypes。我该如何解决这个错误?警告:道具类型失败:提供给RoiCalculator 的string 类型的无效道具business_size,应为number。
在 RoiCalculator 中
webpack/roi_calculator/main.jsx
export type StateType = {
business_size: number,
organisation_name: string,
pay_period: boolean,
timesheet_savings: number,
roster_optimisation: number,
reduction_time: number,
elimination_award: number,
annual_savings: number,
annual_subscription: number,
roi: number,
}
export type PropsType = {
business_size: number,
organisation_name: string,
pay_period: boolean,
timesheet_savings: number,
roster_optimisation: number,
reduction_time: number,
elimination_award: number,
annual_savings: number,
annual_subscription: number,
roi: number,
}
export default class RoiCalculator extends
React.Component<PropsType, StateType> {
constructor (props: PropsType) {
super(props)
this.state = {
business_size: this.props.business_size,
organisation_name: this.props.organisation_name,
pay_period: this.props.pay_period,
timesheet_savings: 0,
roster_optimisation: 0,
reduction_time: 0,
elimination_award: 0,
annual_savings: 0,
annual_subscription: 0,
roi: 0,
}
}
<RoiAssumptions results={this.state}/>
webpack/roi_calculator/views/RoiAssumptions/index.jsx
export type PropsType = {
business_size: number,
organisation_name: string,
pay_period: boolean,
timesheet_savings: number,
roster_optimisation: number,
reduction_time: number,
elimination_award: number,
annual_savings: number,
annual_subscription: number,
roi: number,
}
const t = (key, ...args) => globalT(`js.roi_calculator.${key}`, ...args)
export default class RoiAssumptions extends
React.Component<PropsType, StateType> {
constructor (props: PropsType) {
super(props)
}
<div className={styles.aside__value}>
<p>$
{this.roundOffResult(this.props.results.timesheet_savings)}</p>
</div>
【问题讨论】:
-
this.props.business_size第一次设置在哪里?看起来它以某种方式获得了一个字符串值。如果它来自某种后端 API,则需要在将其作为道具传递之前将其转换为数字。