ListView 未更新 – ListViewDataSource.js 中的错误
ListView not updating – error in ListViewDataSource.js
我目前正在展示一个使用 React Native 框架的 iOS 应用程序。为了允许用户选择可用的蓝牙 LE 设备,我使用 RefreshableListView(NPM 包:react-native-refreshable-listview)组件,它使用 React 提供的 ListView 组件。当我第二次使用该列表时(我的应用程序具有离线模式),我将其放入一个单独的组件中并在使用属性中传递可用设备。组件在方法componentWillReceiveProps: function(newProperties)
中更新,如下所示。
componentWillReceiveProps: function(newProperties)
{
if (newProperties.devices !== undefined)
{
if (newProperties.devices.length > 0)
{
alert("length: " + newProperties.devices.length); // the expected result is shown by this statement
this.setState
(
{
dataSource: this.state.dataSource.cloneWithRows(newProperties.discoveredDevices)
}
);
}
}
}
问题是由于以下错误导致列表视图未更新(使用Google Chrome的调试工具捕获):
Uncaught TypeError: Cannot convert undefined or null to object ListViewDataSource.js:202
为了避免这个错误,我尝试初始化数组,如下所示:
componentDidMount: function()
{
this.setState
(
{
dataSource: this.state.dataSource.cloneWithRows(new Array())
}
);
}
但是,这并没有解决问题。使用静态数据初始化数组(通过方法 componentDidMount
完成)也不能修复错误。
我很感激任何建议。提前致谢!
React Native最新版本(0.5.0 RC 0)解决了这个问题
我目前正在展示一个使用 React Native 框架的 iOS 应用程序。为了允许用户选择可用的蓝牙 LE 设备,我使用 RefreshableListView(NPM 包:react-native-refreshable-listview)组件,它使用 React 提供的 ListView 组件。当我第二次使用该列表时(我的应用程序具有离线模式),我将其放入一个单独的组件中并在使用属性中传递可用设备。组件在方法componentWillReceiveProps: function(newProperties)
中更新,如下所示。
componentWillReceiveProps: function(newProperties)
{
if (newProperties.devices !== undefined)
{
if (newProperties.devices.length > 0)
{
alert("length: " + newProperties.devices.length); // the expected result is shown by this statement
this.setState
(
{
dataSource: this.state.dataSource.cloneWithRows(newProperties.discoveredDevices)
}
);
}
}
}
问题是由于以下错误导致列表视图未更新(使用Google Chrome的调试工具捕获):
Uncaught TypeError: Cannot convert undefined or null to object ListViewDataSource.js:202
为了避免这个错误,我尝试初始化数组,如下所示:
componentDidMount: function()
{
this.setState
(
{
dataSource: this.state.dataSource.cloneWithRows(new Array())
}
);
}
但是,这并没有解决问题。使用静态数据初始化数组(通过方法 componentDidMount
完成)也不能修复错误。
我很感激任何建议。提前致谢!
React Native最新版本(0.5.0 RC 0)解决了这个问题