繁体   English   中英

Redux状态更新不会传递到组件的无状态函数中的方法

[英]Redux state updates don't pass through to a method within my component's stateless function

我有一个无状态函数,该函数为Redux / React Native应用程序返回一个组件。 其中包含一些已定义的辅助函数:

export default function TasksList (props) {
  let ds = new ListView.DataSource({
    rowHasChanged: (r1, r2) => r1 !== r2
  });

  const _onLongPress = (rowData) => {
    props.changeCurrentlyEditedTask(rowData.index, rowData)

    props.navigator.push({
      component: EditTask,
      title: props.selectedTaskText,
      leftButtonTitle: 'Cancel',
      rightButtonTitle: 'Save',
      onLeftButtonPress: () => _cancelEditingTask(),
      onRightButtonPress: () => _saveEditedTask()
    })
  }

  const _cancelEditingTask = () => {
    props.navigator.pop();
    props.resetSelectedTask();
  }

  const _saveEditedTask = () => {
    props.saveEditedTask()
    props.navigator.pop();
  }

  const dataSource = ds.cloneWithRows(props.listOfTasks);

  return (
    <View style={ styles.tasksListContainer }>
      <TextInput
        autoCorrect={ false }
        onChangeText={ (text) => props.onChangeText(text) }
        onSubmitEditing={ () => props.addTask(props.text) }
        returnKeyType={ 'done' }
        style={ styles.tasksListTextInput }
        value={ props.text } />
      <ListView
        automaticallyAdjustContentInsets={ false }
        dataSource={ dataSource }
        enableEmptySections={ true }
        renderRow={ (rowData, secctionID, rowID) => {
          return (
            <TasksListCell
              completed={ rowData.completed }
              id={ rowID }
              onLongPress={ (rowID) => _onLongPress(rowData) }
              onPress={ (rowID) => props.changeCompletionStatus(rowData.index) }
              text={ rowData.text }
              completed={ rowData.completed }
              formattedDate={ rowData.hasOwnProperty('formattedDate') ? rowData.formattedDate : undefined } />
          )
        }
      }
      style={ styles.tasksListView } />
    </View>
  );
};

每当我的Redux状态更改时,其更改就会按预期扩散到TasksList。 但是, _saveEditedTask无法接收这些更新。

如果我试图通过props作为参数传递给我的saveEditedTask在我的容器调度方法,没有收到父更新的状态TasksList功能一样。

如何修复此代码,以使_saveEditedTask从其父TasksList函数接收最新的props

目前,已定义_saveEditedTask函数,并且实际上可以访问TasksList组件的道具。

问题是您没有将此函数作为道具传递给render方法中的所有子项。

您应该在组件的render方法中将以下属性提供给子级之一。 如果您不这样做,则该函数将永远不会被调用。

onSave={ () => _saveEditedTask() }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM