我试着为反应道具获得智慧。在此之前,我会将viewmodel传递给razor视图(.cshtml)。
@model namespace.WeatherVM
是的。这样我就可以很容易地访问所有可用的属性,比如
@Model.TemperatureF
是的。Intellisense会弹出并让我知道可以访问的内容。
在反应中,我也想做同样的事情。在我的VM中,如果我有40个属性,我需要一个智能感知或一些可以显示所有可用属性的东西。
假设我有这样的东西:
function renderForecastsTable(props) {
return (
<table className='table'>
<thead>
<tr>
<th>Date</th>
<th>Temp. (C)</th>
<th>Temp. (F)</th>
<th>Summary</th>
<th></th>
</tr>
</thead>
<tbody>
{props.forecasts.map(forecast =>
<tr key={forecast.dateFormatted}>
<td>{forecast.dateFormatted}</td>
<td>{forecast.temperatureC}</td>
<td>{forecast.temperatureF}</td>
<td>{forecast.summary}</td>
</tr>
)}
</tbody>
</table>
);
}
我怎么能让智能感应告诉我道具有预测?或者告诉我每个预测都有类似temperaturef的属性?
我试着和道具打交道,但运气不好。
/模型/天气预报.js
import PropTypes from 'prop-types';
export const WeatherForecast = PropTypes.shape({
TemperatureC: React.PropTypes.string,
TemperatureF: React.PropTypes.string,
Summary: React.PropTypes.string,
TestProp: React.PropTypes.string
});
然后试着有智慧的工作
获取数据.js
import * as Model from '../models/weatherForecast';
class FetchData extends Component {
componentWillMount() {
this.props.weatherForecast.TestProp // <---- No intellisense or no suggestion was provided for the existence of 'TestProp'. I had to manually write this in.
}
}
FetchData.prototype = { weatherForecast: Model.WeatherForecast };
你知道我能做些什么吗?我知道typescript是一种解决方案,但这是唯一的吗?