javascript - React js - 使用数组值和换行符更新状态

标签 javascript reactjs

我有一个数组,其中包含一些错误“var HoldErrors”。我正在更新我的 React JS 应用程序中的状态:

this.setState({
   message: HoldErrors
});

当在屏幕上输出时,这个数组变成了我向最终用户显示的一串错误消息,这很棒。但是,如何使用换行符分隔状态中的每条错误消息?

例如,当我构建我的数组时,我试图在每个项目之后添加一个“br”标签:

var HoldErrors = [];
Object.keys(data.errors).forEach(function(key){
    HoldErrors.push(data.errors[key].msg + '<br>');
});

显然“br”标签在 React 中不起作用。 那么,当我更新状态时,如何将数组中的每个错误放在它自己的行中呢?干杯。

编辑:这就是我渲染组件的方式:

render() {
        return (
            <div className="Register">
                <h1>Register</h1>
                <form onSubmit={this.RegisterSubmit}>
                    <input type="email" ref="email" placeholder="Email address" />
                    <input type="text" ref="name" placeholder="Your name" />
                    <input type="password" ref="password" placeholder="Password" />
                    <input type="password" ref="passwordc" placeholder="Confirm password" />
                    <input type="submit" value="Register" />
                </form>
                <div className="validation-msg">{this.state.message}</div>
            </div>
        )
    }

最佳答案

当你说

<div className="validation-msg">{this.state.message}</div>

{this.state.message}部分将通过将其强制转换为字符串来呈现(DOM 中的所有文本最终都以字符串形式结束)。

因为 message是一个数组,将其强制转换为字符串与通过将其包含的所有元素单独强制转换为字符串(在本例中它们已经是字符串)并在其间添加一个逗号来连接它所包含的所有元素相同:

console.log(
 ['a', 'b','c'].toString() // logs: a,b,c
)

你想要做的是映射这个数组并将每个字符串转换成一个 block element本身,就像一个<div> :

<div className="validation-msg">
  {this.state.message.map((m, i) => <div key={`message-${i}`}>m</div>)}
</div>

inline element例如<span><br />在每个字符串之后

<div className="validation-msg">
  {this.state.message.map((m, i) => <span key={`message-${i}`}>m<br /></span>)}
</div>

注意:不要忘记添加 keys到你的数组元素。

关于javascript - React js - 使用数组值和换行符更新状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45169993/

相关文章:

javascript - 范围过滤器错误

javascript - 如果超过逗号(,),如何删除逗号

reactjs - react native Firebase 消息传递点击通知

javascript - 在 React 组件内设置新状态后调用的方法

javascript - 如何使用 Material UI Card 和 CardMedia 在背景图像上添加一些文本

javascript - 使用 React 和 Django 处理许多 html 文件

javascript - firebase 使用用户 token 设置数据

javascript - Google 日历 API - 无法列出辅助日历中的事件

reactjs - 简单的 react 渲染不起作用

javascript - 我可以使用来自 CDN 的 React-Select Async (AsyncSelect) 吗? (我收到 Uncaught ReferenceError : exports is not defined)