小编mth*_*ers的帖子

无法将String解析为LocalDate(Java 8)

我的输入是2015年7月1日格式为"01-07-2015"的日期的字符串表示.我正在尝试将其解析为java.time.LocalDate变量:

final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-YYYY");
final String input = "01-07-2015";
final LocalDate localDate = LocalDate.parse(input, DATE_FORMAT);
Run Code Online (Sandbox Code Playgroud)

基于DateTimeFormatterJavaDoc,我希望这可行.但是,我收到了一条非常友好和乐于助人的消息:

引起:java.time.DateTimeException:无法从TemporalAccessor获取LocalDate:{DayOfMonth = 1,MonthOfYear = 7,WeekBasedYear [WeekFields [MONDAY,4]] = 2015},ISO类型为java.time.format.Parsed

我真的不明白这个异常告诉我的是什么.任何人都可以解释我出了什么问题吗?

java datetime java-8 java-time

26
推荐指数
2
解决办法
2万
查看次数

使用TypeScript编写React高阶组件

我正在用TypeScript 编写一个React高阶组件(HOC).HOC应该接受比包裹组件多一个支柱,所以我写道:

type HocProps {
    // Contains the prop my HOC needs
    thingy: number
}
type Component<P> = React.ComponentClass<P> | React.StatelessComponent<P>
interface ComponentDecorator<TChildProps> {
    (component: Component<TChildProps>): Component<HocProps & TChildProps>;
}
const hoc = function<TChildProps>(): (component: Component<TChildProps>) => Component<HocProps & TChildProps) {
    return (Child: Component<TChildProps>) => {
        class MyHOC extends React.Component<HocProps & TChildProps, void> {
            // Implementation skipped for brevity
        }
        return MyHOC;
    }
}
export default hoc;
Run Code Online (Sandbox Code Playgroud)

换句话说,hoc是一个产生实际HOC的函数.这个HOC(我相信)是一个接受a的功能Component.由于我事先并不知道包装组件是什么,我使用泛型类型TChildProps来定义包装组件的道具形状.该函数还返回一个Component.返回的组件接受包装组件的道具(再次使用泛型键入TChildProps) …

typescript reactjs higher-order-components

10
推荐指数
3
解决办法
5119
查看次数

null不是React Native组件中的对象(评估'internalInstance.getHostNode')

我的React Native应用程序有一个应该显示可滚动列表的组件.我也使用React Native Elements,虽然留下它似乎并没有产生很大的不同.

我的组件看起来像这样:

export class MyComponent extends React.Component {
    constructor(props) {
        super(props);

        const ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 });
        this.state = { ds: ds.cloneWithRows(this.props.myItems) };
    }

    render() {
        return (
            <View>
                <Text>Some text here</Text>
                <List>
                    <ListView dataSource={ this.state.ds } renderRow={ renderRow } />
                </List>
            </View>
        );
    }
};
Run Code Online (Sandbox Code Playgroud)

renderRow类外声明的地方,因为它不需要它的状态,如:

const renderRow = (rowData, sectionId) => {
    return (
        <ListItem
            key={ sectionId }
            title={ rowData.myProp }
            subtitle={ rowData.myOtherProp } …
Run Code Online (Sandbox Code Playgroud)

react-native react-native-listview

7
推荐指数
1
解决办法
4894
查看次数

测试使用Hooks获取数据的React组件

我的React应用程序具有一个组件,该组件从远程服务器获取要显示的数据。在前钩时代,这componentDidMount()是一个可以去的地方。但是现在我想为此使用钩子。

const App = () => {
  const [ state, setState ] = useState(0);
  useEffect(() => {
    fetchData().then(setState);
  });
  return (
    <div>... data display ...</div>
  );
};
Run Code Online (Sandbox Code Playgroud)

我使用Jest和Enzyme进行的测试如下所示:

import React from 'react';
import { mount } from 'enzyme';
import App from './App';
import { act } from 'react-test-renderer';

jest.mock('./api');

import { fetchData } from './api';

describe('<App />', () => {
  it('renders without crashing', (done) => {
    fetchData.mockImplementation(() => {
      return Promise.resolve(42);
    });
    act(() => mount(<App />));
    setTimeout(() => …
Run Code Online (Sandbox Code Playgroud)

reactjs jestjs enzyme react-test-renderer react-hooks

5
推荐指数
3
解决办法
5126
查看次数

等待动态导入

我使用create-react-app创建了一个带有 React 和 Typescript 的 Web 应用程序。它使用了一个相当繁重的第三方库。我想通过使用动态导入表达式从主包中排除它。

所以,import { Component } from 'library'我没有做,而是创建了一个看起来像这样的小包装器:

const loadLibrary = async () => {
    const x = await import('library').then((r) => r);
    return x;
};
const {
    Component,
} = loadLibrary() as any;

// tslint:disable-next-line:no-console
console.log(`typeof Component is ${typeof Component}`);

export {
    Component,
};
Run Code Online (Sandbox Code Playgroud)

然后,在我的应用程序中,我会使用import { Component } from '../library-wrapper.ts'. 因为包装器使用动态导入表达式,Webpack 创建了一个单独的块,只有浏览器才真正需要它。\o/.

但坏消息是:我的包装器实际上并不等待动态导入表达式。它调用loadLibrary()函数但立即继续执行,记录

typeof 组件未定义

因此,当我尝试使用 时Component,React 崩溃了:

元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件)但得到:未定义。 …

async-await typescript reactjs

4
推荐指数
1
解决办法
1万
查看次数

无法证明Null <:<T

在我的Scala代码中,我有一个数组Option[T],如下所示:

val items = Array.fill[Option[T]](10)(None)
Run Code Online (Sandbox Code Playgroud)

现在,我想从该数组中读取一个特定的项目; 如果没有设定,我想拥有null.但是当我这样做时items(desiredIndex).orNull,Scala编译器会对我大喊:

Error:(32, 34) Cannot prove that Null <:< T.
      (items(desiredIndex).orNull).asInstanceOf[T]
Run Code Online (Sandbox Code Playgroud)

我不完全理解这个错误.我所理解的是,编译器无法推断出它null确实是一个有效值T(因为它不知道T将是什么).纵观实施,我应提供证据隐含的事实,null是一个有效的价值T:

@inline final def orNull[A1 >: A](implicit ev: Null <:< A1): A1 = this getOrElse ev(null)
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是:我怎样才能提供这样的证据?ev应该是什么类型,我该如何为它创建一个值?

scala optional

2
推荐指数
1
解决办法
2393
查看次数

如何使用谷歌+令牌从https://www.googleapis.com/plus/v1/people/me电话获取电子邮件?

我想收到来自https://www.googleapis.com/plus/v1/people/me电话的电子邮件.我收到很多信息,但不是电子邮件.有人可以帮忙吗?

HttpGet request = new HttpGet("https://www.googleapis.com/plus/v1/people/me?scope=https://www.googleapis.com/auth/userinfo.email");
request.setHeader("Authorization", "Bearer <access_token>");
HttpResponse response = client.execute(request);
Run Code Online (Sandbox Code Playgroud)

java email google-plus

1
推荐指数
1
解决办法
5361
查看次数