我不能将initialValues用于redux-form,我该怎么办?

时间:2018-03-17 22:04:31

标签: javascript reactjs redux redux-form

我想在我的组件中渲染两个redux格式index-url

我有一些来自调用服务器的字段的初始值。但我无法在library(dplyr) library(tidyr) library(microbenchmark) microbenchmark( old = { tib <- tibble(g1 = c("A", "A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "C"), g2 = c("a", "a", "b", "b", "b", "c", "d", "d", "b", "b", "e", "e"), desc = 1:12, val = paste0("v", 1:12)) # Number of rows in final table n_rows <- length(unique(tib$g1)) + length(unique(paste0(tib$g1, tib$g2))) + nrow(tib) # create empty output tibble output <- as_tibble(matrix(nrow = n_rows, ncol = 2)) %>% rename(desc = V1, val = V2) %>% mutate(desc = NA_character_, val = NA_real_) # loop counters level_1 <- 0 level_2 <- 0 output_row <- 1 for(i in seq_len(nrow(tib))){ # level 1 headings if(tib$g1[[i]] != level_1) { output$desc[[output_row]] <- tib$g1[[i]] output_row <- output_row + 1 } # level 2 headings if(paste0(tib$g1[[i]], tib$g2[[i]]) != paste0(level_1, level_2)) { output$desc[[output_row]] <- tib$g2[[i]] output_row <- output_row + 1 } level_1 <- tib$g1[[i]] level_2 <- tib$g2[[i]] # Description and data output$desc[[output_row]] <- tib$desc[[i]] output$val[[output_row]] <- tib$val[[i]] output_row <- output_row + 1 } } , new_simple = { tib <- tibble(g1 = c("A", "A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "C"), g2 = c("a", "a", "b", "b", "b", "c", "d", "d", "b", "b", "e", "e"), desc = 1:12, val = paste0("v", 1:12)) %>% unite('g1g2', g1, g2, remove = F) tib_list <- split(tib, tib$g1g2) convert_group <- function(sub_df){ tibble( desc = c(sub_df$g1[1], sub_df$g2[2], sub_df$desc) , val = c(NA, NA, sub_df$val) ) } res_df <- bind_rows(lapply(tib_list, convert_group)) } , new_fast = { tib <- tibble(g1 = c("A", "A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "C"), g2 = c("a", "a", "b", "b", "b", "c", "d", "d", "b", "b", "e", "e"), desc = 1:12, val = paste0("v", 1:12)) %>% unite('g1g2', g1, g2, remove = F) tib_list <- split(tib, tib$g1g2) convert_desc <- function(sub_df){ c(sub_df$g1[1], sub_df$g2[2], sub_df$desc) } convert_val <- function(sub_df){ c(NA, NA, sub_df$val) } res_df <- tibble( desc = sapply(tib_list, convert_desc) , val = sapply(tib_list, convert_val) ) } ) 中使用Unit: milliseconds expr min lq mean median uq max neval old 41.06535 43.52606 49.42744 47.29305 52.74399 76.98021 100 new_simple 57.08038 60.65657 68.11021 63.38157 71.62398 112.24893 100 new_fast 24.16624 26.30785 31.07178 28.38764 31.91647 148.06442 100

为什么呢?因为我的app状态是一个实体数组,它位于我可以访问Fields的组件中,这使我可以从该数组中选择正确的实体。在initialValues我无法访问mapStateToProps

在这种情况下我该怎么办?

this.entityId

1 个答案:

答案 0 :(得分:2)

您可以在mapStateToProps - ownProps中使用第二个参数。

因此,您可以在此功能中访问组件的道具。

例如:

function mapStateToProps(state, ownProps) {
  const groupId = ownProps.match.params.id;

  return {
    groups: state.groups,
    initialValues: state.groups[groupId],
  };
}

希望它会有所帮助。