Typescript 如何在react native day picker中初始化状态?

Typescript 如何在react native day picker中初始化状态?,typescript,react-native,Typescript,React Native,我正在尝试应用react本机日历。 我的代码是 import React from 'react'; import {Calendar} from 'react-native-day-picker'; ... const MyCalendar = () => ( var from = new Date(); from.setDate(from.getDate() - 16); var to = new Date(); var startDate = new Date(); st

我正在尝试应用react本机日历。 我的代码是

import React from 'react';
import {Calendar} from 'react-native-day-picker';
...
 const MyCalendar = () => (
 var from = new Date();
 from.setDate(from.getDate() - 16);
 var to = new Date();
 var startDate = new Date();
 startDate.setMonth(startDate.getMonth() + 1);
<View style={styles.container}>
            <Calendar
                monthsCount={24}
                startFormMonday={true}
                startDate={startDate}
                selectFrom={from}
                selectTo={to}
                width={350}
                onSelectionChange={(current, previous) => {
                    console.log(current, previous);
                }}
            />
        </View>;
);
export default MyCalendar;
我的问题是如何初始化值,例如from、to、startDate。 那么我应该如何解决这个问题呢

-;标记后面不能有分号
- </View>; you can't have semicolon after tags
- You have to write views in return(...)
- Now you can call myCalender from class

 const MyCalendar = function () {
        var from = new Date();
     from.setDate(from.getDate() - 16);
     var to = new Date();
     var startDate = new Date();
     startDate.setMonth(startDate.getMonth() + 1);
    return(
    <View style={styles.container}>
                <Calendar
                    monthsCount={24}
                    startFormMonday={true}
                    startDate={startDate}
                    selectFrom={from}
                    selectTo={to}
                    width={350}
                    onSelectionChange={(current, previous) => {
                        console.log(current, previous);
                    }}
                />
            </View>
    );
    };
-您必须编写视图作为回报(…) -现在你可以在课堂上给我的日历打电话了 const MyCalendar=函数(){ var from=新日期(); from.setDate(from.getDate()-16); var to=新日期(); var startDate=新日期(); startDate.setMonth(startDate.getMonth()+1); 返回( { console.log(当前、以前); }} /> ); };
如果我们有多个用于箭头函数的语句,我们需要使用块体{}

在简明的正文中,只需要一个表达式和一个隐式表达式 附上报税表。在块体中,必须使用显式返回 声明

因此,您需要返回视图组件,它是MyCalendar的最后一条语句

这就是为什么我删除了{}for onSelectionChange of Calendar组件,因为我们可以对单行语句使用简明体


一些额外的修理

对于那些我们从未重新赋值的变量,我们应该使用const

请参阅eslint插件的react规则

在JSX中使用布尔属性时,可以设置属性值 为真或省略该值。此规则将强制执行一个或另一个 保持代码的一致性

这就是为什么我删除了日历中StartForCommonDay的真实值

修复后的代码如下:

const MyCalendar = () => {
  const from = new Date();
  from.setDate(from.getDate() - 16);
  const to = new Date();
  let startDate = new Date();
  startDate.setMonth(startDate.getMonth() + 1);
  return (
    <View style={styles.container}>
      <Calendar
        monthsCount={24}
        startFormMonday
        startDate={startDate}
        selectFrom={from}
        selectTo={to}
        width={350}
        onSelectionChange={(current, previous) => console.log(current, previous)}
      />
    </View>
  );
};
constmycalendar=()=>{
const from=新日期();
from.setDate(from.getDate()-16);
const to=新日期();
让startDate=新日期();
startDate.setMonth(startDate.getMonth()+1);
返回(
console.log(当前、以前)}
/>
);
};

我使用文本编辑器,并使用作为我的样式指南。它们在语法错误检测方面有很大帮助。

谢谢您的建议。我按照你的建议把它们修好了。顺便问一下,你熟悉日期选择器插件吗?如果是这样的话,你能帮我在要求下实现它吗?日期期限为从今天到365天。上面的代码显示了大约2年的日期范围。我更新了monthCount={12},但仍然相同。我的意思是,如果今天是2016年8月23日,显示为2016年8月1日~2017年8月1日,如果您能帮助我,我将不胜感激。谢谢。我想你可以安装moment软件包,并参考此链接,以获得从现在起365天的日期,甚至1年的日期减去1天。获得计算日期后,将其作为selectTo的值?
const MyCalendar = () => {
  const from = new Date();
  from.setDate(from.getDate() - 16);
  const to = new Date();
  let startDate = new Date();
  startDate.setMonth(startDate.getMonth() + 1);
  return (
    <View style={styles.container}>
      <Calendar
        monthsCount={24}
        startFormMonday
        startDate={startDate}
        selectFrom={from}
        selectTo={to}
        width={350}
        onSelectionChange={(current, previous) => console.log(current, previous)}
      />
    </View>
  );
};