反应初学者问题:令人困惑的箭头函数示例

时间:2019-07-02 21:32:06

标签: javascript reactjs material-ui arrow-functions

我是React / ES6的初学者,我使用的是这段代码,它用于处理被单击的自定义组件中的复选框(自定义组件包括material-ui CheckBox,因此为“ checked”值)。我打算在自定义组件中添加更多字段,例如与复选框相对应的文本框,用户可以在其中添加有关其选中框的更多信息。

无论如何,我对第一行中发生的事情有些困惑。我希望你们中的一位高级开发人员可以帮我分解一下,以便我能理解这里发生的事情。

需要注意的两件事:

  1. 索引控制台日志以整数值(在我的映射数组中的位置)
  2. checked默认为false,但控制台日志为true(是否为 以某种方式切换为true?)

    apply plugin: 'com.android.library'
    apply plugin: 'com.jfrog.artifactory'
    apply plugin: 'maven-publish'
    apply plugin: 'maven'
    
    ...
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
    
        api project(':submodule1')
        api project(':submodule2')
    }
    
    afterEvaluate { project ->
        uploadArchives {
            repositories {
                mavenDeployer {
                    pom.whenConfigured { pom ->
                        pom.dependencies.forEach { dep ->
                            if (dep.getVersion() == "unspecified") {
                                dep.setGroupId(GROUP)
                                dep.setVersion(VERSION_NAME)
                            }
                        }
                    }
                }
            }
        }
    }
    
    publishing {
        publications {
            aar(MavenPublication) {
                groupId packageName
                version = linkLibraryVersion
                artifactId project.getName()
                artifact("$buildDir/outputs/aar/main-release.aar")
    
                pom.withXml {
                    def dependencies = asNode().appendNode('dependencies')
                    configurations.getByName("releaseCompileClasspath").getResolvedConfiguration().getFirstLevelModuleDependencies().each {
                        if (it.moduleGroup == "example") {
                            def dependency = dependencies.appendNode('dependency')
                            dependency.appendNode('groupId', packageName)
                            dependency.appendNode('artifactId', it.moduleName)
                            dependency.appendNode('version', libraryVersion)
                        } else {
                            def dependency = dependencies.appendNode('dependency')
                            dependency.appendNode('groupId', it.moduleGroup)
                            dependency.appendNode('artifactId', it.moduleName)
                            dependency.appendNode('version', it.moduleVersion)
                        }
                    }
                }
            }
        }
    }
    
    artifactory {
        contextUrl = project.hasProperty('local') ? 'https://example.jfrog.io/example' : 'TOOD'
        publish {
            repository {
                // The Artifactory repository key to publish to
                repoKey = 'repo'
    
                project.hasProperty('artifactory_username') ? System.out.println(project.artifactory_username) : System.out.println("NO USERNAME")
                project.hasProperty('artifactory_password') ? System.out.println(project.artifactory_password) : System.out.println("NO PASSWORD")
    
                username = project.hasProperty('artifactory_username') ? project.artifactory_username : ""
                password = project.hasProperty('artifactory_password') ? project.artifactory_password : ""
            }
            defaults {
                publications('aar')
                publishArtifacts = true
                publishPom = true
            }
        }
    }
    

这是我从中获取的代码示例,可以正常工作。

dat$geom_transect <- as.character(dat$geom_transect)
dat$lon <- as.numeric(sapply(strsplit(dat$geom_transect, '[(,)]'), "[[", 2))
dat$lat <- as.numeric(sapply(strsplit(dat$geom_transect, '[(,)]'), "[[", 3))

1 个答案:

答案 0 :(得分:0)

以下内容:

const onCheckBoxChange = index => ({ target: { checked } }) => {
  // stuff
};

也可以写成:

const onCheckBoxChange = index => (event) => {
  const checked = event.target.checked;
  // stuff
};

{ target: { checked } }是在函数参数上使用object destructuring的示例。在这种情况下,参数将是一个事件。

第一部分:

index => another-function

正如注释中提到的,

是咖喱函数的一个示例。我假设在循环中使用了onCheckBoxChange,在该循环中传递了要呈现的复选框的索引,然后在循环中返回了一个函数,该函数是change事件的事件处理程序。然后,index用于获取/设置相应复选框的选中状态。