javascript - ReactJS:初学者任务 - 添加换行符

标签 javascript reactjs

我正在尝试在 ReactJS 中构建一个聊天(用于练习)。我刚刚开始尝试它,但我不确定我的方法是否正确。我设法在主聊天 div 的输入上添加文本,但我不确定如何在主聊天 div 中的每条消息后添加 br。目前它只是连接文本。

    class Chat extends React.Component {

        constructor(props) {

            super(props);

            this.state = {
                text: props.text,
                message: ''
            }

            this.handleChange = this.handleChange.bind(this);
            this.sendMessage = this.sendMessage.bind(this);

        }

        handleChange(event) {
            this.setState({message: event.target.value});
        }

        sendMessage(event) {

            event.target.value = ''

            this.setState((state, props) => ({
                text: this.state.text + this.state.message, // I tried here to add a br but with no success
                message: ''
            }));

            event.preventDefault();

        }

        render() {
            return (
                <div>
                    <div>
                        {this.state.text}
                    </div>

                    <form onSubmit={this.sendMessage}>
                        <input type="text" value={this.state.message} onChange={this.handleChange} />
                        <input type="submit" value="Submit" />
                    </form>

                </div>
                );
        }
    }

    ReactDOM.render(
        <Chat text='' />,
        document.getElementById('root')
    );

最佳答案

我会尝试使用一个元素数组(可能是 div 的),每个消息对应一个元素,而不是使用单个字符串来表示所有消息。 div 的默认显示将为您提供每条消息之间的休息时间。然后您可以自行设置样式以添加更多间距或任何您想要的内容。

看这里:

class Chat extends React.Component {
    constructor(props) {
        super(props);

        this.state = {
            messages: [],
            message: ''
        }

        this.handleChange = this.handleChange.bind(this);
        this.sendMessage = this.sendMessage.bind(this);
    }

    handleChange(event) {
        this.setState({message: event.target.value});
    }

    sendMessage(event) {
        let messages = this.state.messages;
        messages.push(
            <div key={this.state.messages.count + 1}>
                {this.state.message}
            </div>
        );

        this.setState({
            messages: messages, 
            message: '',
        });

        event.preventDefault();
    }

    render() {
        return (
            <div>
                <div>
                    {this.state.messages}
                </div>

                <form onSubmit={this.sendMessage}>
                    <input type="text" value={this.state.message} onChange={this.handleChange} />
                    <input type="submit" value="Submit" />
                </form>
            </div>
        );
    }
}

ReactDOM.render(
    <Chat />,
    document.getElementById('root')
);

关于javascript - ReactJS:初学者任务 - 添加换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55719969/

相关文章:

javascript - 如何设置缩放控制选项?

reactjs - React Spring "Can' t 在未安装的组件上执行 React 状态更新”

javascript - 我如何使 2 个函数在 jquery 中与 "or"同时工作?

javascript - 用于触摸屏的 HTML Canvas 帮助

javascript - 从数组 React 中过滤过期的卡片

javascript - axios 不会分别返回响应和错误

javascript - 使用 React 有条件地从元素中添加/删除属性

javascript - Ember.js 绑定(bind)不触发更改

javascript - 通过循环将 CSS 类应用于每个 <li> 元素

javascript - 使用 JavaScript 的 ipad 3 屏幕