我的输入是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)
基于DateTimeFormatter
JavaDoc,我希望这可行.但是,我收到了一条非常友好和乐于助人的消息:
引起:java.time.DateTimeException:无法从TemporalAccessor获取LocalDate:{DayOfMonth = 1,MonthOfYear = 7,WeekBasedYear [WeekFields [MONDAY,4]] = 2015},ISO类型为java.time.format.Parsed
我真的不明白这个异常告诉我的是什么.任何人都可以解释我出了什么问题吗?
我正在用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
) …
我的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应用程序具有一个组件,该组件从远程服务器获取要显示的数据。在前钩时代,这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) 我使用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 崩溃了:
元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件)但得到:未定义。 …
在我的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
应该是什么类型,我该如何为它创建一个值?
我想收到来自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) reactjs ×3
java ×2
typescript ×2
async-await ×1
datetime ×1
email ×1
enzyme ×1
google-plus ×1
java-8 ×1
java-time ×1
jestjs ×1
optional ×1
react-hooks ×1
react-native ×1
scala ×1