我正在查看React源代码并偶然发现了一个要求var emptyFunction = require('fbjs/lib/emptyFunction');.
我看了看这个函数,并对它的作用感到困惑.
这是功能
function makeEmptyFunction<T>(arg: T): (...args: Array<any>) => T {
return function() {
return arg;
};
}
const emptyFunction: (...args: Array<any>) => void = function() {};
Run Code Online (Sandbox Code Playgroud)
在评论中,他们给出了以下解释,我对此感到困惑:
此功能接受并丢弃输入; 它没有副作用.这对于可覆盖的函数端点来说非常有用,它总是需要可调用的,因为JS缺少一个null调用的成语ala Cocoa
我从来没有遇到过空调成语,并希望有人可以澄清这意味着什么,并用较少的技术语言解释这个功能的目的.
希望这个问题不会被忽视,因为它与代码不完全相关.也许它属于其他地方,如果是这样我很抱歉.
我在一个非常简单的应用程序中使用react router v4.我试图按照文档,但我的应用程序尝试启动时有一个奇怪的错误.
错误说: error: React.Children.only expected to receive a single React element child
奇怪的是我的ReactDOM.render函数中只有一个组件.
这是我的代码的一些片段:
index.js:
ReactDOM.render(
<App />,
document.getElementById('root')
);
Run Code Online (Sandbox Code Playgroud)
app.js(我隐藏了所有明显的组件导入):
import { BrowserRouter as Router, Route } from 'react-router-dom'
class App extends Component {
render() {
return (
<Router>
<div className="App">
<Route path='/'>
<Header/>
<div className="search-container">
<SearchBar/>
<AddMovieButton/>
</div>
<SearchResultsList/>
</Route>
<Route exact path='/new'>
<AddMovieForm/>
</Route>
</div>
</Router>
);
}
}
export default App;
Run Code Online (Sandbox Code Playgroud)
我真的不明白为什么这不起作用,为什么我有这个错误.
我想用编译后的绑定将页面中的元素绑定到代码中的依赖项属性,同时用通常的绑定将另一个元素绑定到ViewModel。但这会导致运行时错误。
这是我的xaml代码。
<Page
x:Class="XbindingProblem.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XbindingProblem"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
DataContext="{Binding Main, Source={StaticResource Locator}}"
mc:Ignorable="d">
<Page.Resources>
<DataTemplate x:Key="UserDataTemplate" x:DataType="local:User">
<StackPanel>
<TextBlock Text="{x:Bind Name}" />
<TextBlock Text="{x:Bind Age}" />
</StackPanel>
</DataTemplate>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<StackPanel>
<TextBlock Text="{Binding Title}"/>
<ContentPresenter ContentTemplate="{StaticResource UserDataTemplate}" Content="{x:Bind CurrentUser, Mode=OneWay}"/>
</StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
这里CurrentUser是依赖项属性,该属性最初为null,然后在运行时更改。这给出了以下运行时错误。
Incorrect type passed into template. Based on the x:DataType global::XbindingProblem.User was expected.
Run Code Online (Sandbox Code Playgroud)
问题在于,当CurrentUser为null时,它将ViewModel传递给UserDataTemplate而不是CurrentUser依赖项属性。
谁能对这个问题有一个很好的解释?