javascript - 组件 onPress 函数内的渲染按钮显示最后一个 i。 React-Native

标签 javascript reactjs react-native

我正在尝试从 redux 加载包含数组的组件(在示例中为 test)。我能够创建按钮并拥有正确的标题,但是 onPress 函数未显示正确的值

//expected outcome when press button "a"
0
//Outcome
2
class Test extends React.Component {
    render() {
        var buttons = []
        for (var i = 0; i < this.props.test.length; i++) { // this.props.test = ["a","b"]
            buttons.push(
                <Button
                    title={this.props.test[i]}
                    onPress={() => console.log(i)}
                />
            )
        }
        return (
            <View>
                {buttons}
            </View>
        );
    }
}

最佳答案

您需要定义let而不是var

for (let i = 0; i < this.props.test.length; i++) { // this.props.test = ["a","b"]
            buttons.push(
                <Button
                    title={this.props.test[i]}
                    onPress={() => console.log(i)}
                />
            )
        }

var 之间的主要区别 let 是, let 不是函数作用域,而是 是 block 作用域的。这意味着使用 let 创建的变量 关键字在创建它的“ block ”以及任何嵌套 block 中可用。当我说“ block ”时,我指的是任何被大括号 {} 包围的东西。 就像在 for 循环或 if 语句中一样。

为了更好地理解范围。访问https://tylermcginnis.com/var-let-const/

尝试使用map()功能

export default class Test extends React.Component {
  state={value:0}
  handleClick=id=>{
    this.setState({value:id})
  }
    render() { 
        let buttons;
        buttons = this.props.test.map(te=>
        <Button
            key={te}
            title={te}
            onPress={() => this.handleClick(te)}
          />
        )
        return (
            <View>
                {buttons}
                <Text>{this.state.value}</Text>
            </View>
        );
    }
}

关于javascript - 组件 onPress 函数内的渲染按钮显示最后一个 i。 React-Native,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60107491/

相关文章:

javascript - 在 VBA 中从 Javascript 获取 XmlHttpRequest 的 ReadyState

reactjs - React - 我无法停止表格内标签点击的传播

android - 如何使 Android 应用程序在 Chromebook 上可用(react-native)

javascript - 如果浏览器视口(viewport)处于特定宽度或更大,则切换 ".show"和 ".hide",条件始终为 ".show"。 (响应式/移动菜单)

javascript - 使用 querySelector 选择元素后无法更改元素的 html

javascript - 如何设置 Atom 编辑器以仅使用react-native-community eslint-config?

javascript - 如何使用 renderMessage、renderMessageImage 函数以及如何在消息对象为空时显示未找到的消息

android - react native : undefined is not an object (evaluating 'r.default.manifest.env' )

javascript - Tokbox 相机过滤器 API 问题

reactjs - 在 map 函数中 react setState