2017-12-20 7 views
0

テキストを入力しようとすると、テキストがオーバーフローして水平線で表示されます。ここでの行が自動的にテキスト反応でのテキストオーバーフローの問題

import React, { Component } from 'react'; 

export default class App extends Component { 
    constructor(props) { 
    super(props); 
    this.state = { items: [], text: '' }; 
    this.handleChange = this.handleChange.bind(this); 
    this.handleSubmit = this.handleSubmit.bind(this); 
} 

render() { 
    return (
     <div> 
      <form onSubmit = {this.handleSubmit}> 
       <input onChange={this.handleChange} value={this.state.text} /> 
      </form> 
      <div> 
       <TodoList items={this.state.items} /> 
      </div> 
     </div> 
    ); 
} 

handleChange(e) { 
    this.setState({ text: e.target.value }); 
} 

handleSubmit(e) { 
    e.preventDefault(); 

    if (!this.state.text.length) { 
     return; 
    } 

    const newItem = { 
     text: this.state.text, 
    }; 
    this.setState(prevState => ({ 
     items: prevState.items.concat(newItem), 
     text: '' 
    })); 
} 

class TodoList extends React.Component { 
    render() { 
     return (
      <div> 
       {this.props.items.map(item => (
        <h3 key={item.id}>{item.text}</h3> 
       ))} 
      </div> 
     ); 
    } 
} 

ごとに調整する必要があるすべてのヘルプは、 おかげでいただければ幸いです。

答えて

0

あなたのコードに小さな誤りがあると思うので、入力タグの値を適切に宣言する必要があります。ここではあなたが試すことができますコードは次のとおりです。ここで

import React, { Component } from 'react'; 

export default class App extends Component { 
       constructor(props) { 
       super(props); 
       this.state = { items: [], text: '' }; 
       this.handleChange = this.handleChange.bind(this); 
       this.handleSubmit = this.handleSubmit.bind(this); 
     } 

      render() { 
      return (
      <div> 
      <form onSubmit = {this.handleSubmit}> 
      <input 
      onChange={this.handleChange} 
      value={this.state.text} /> 
      </form> 
      <div> 
       <TodoList items={this.state.items} /> 
      </div> 
      </div> 
    ); 
    } 

      handleChange(e) { 
         this.setState({ text: e.target.value }); 
      } 

      handleSubmit(e) { 
         e.preventDefault(); 
         if (!this.state.text.length) { 
        return; 
      } 
      const newItem = { 
      text: this.state.text, 

      }; 
      this.setState(prevState => ({ 
      items: prevState.items.concat(newItem), 
      text: '' 
    })); 
    } } 

     class TodoList extends React.Component { render() { return (

     <div> 

      {this.props.items.map(item => (
       <h3 key={item.id} className="text-list">{item.text}</h3> 
      ))} 

      </div> 
); 
} 

} 

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

は、更新作業のデモです:https://react-guerkm.stackblitz.io/

あなたはクラス名に下記のCSSを追加することができます。

.text-list{ 
    color: aqua; 
    width: 50%; 
    overflow-wrap: break-word; 
} 
+0

入力しますクリックした後、動的に生成された水平線が存在し、テキストごとに自動的に調整されるはずです。行は生成されますが、テキストごとに調整されません。 – Norm

+0

は、リスト項目に入力する作業を指していますか?またはテキストボックスに新しい行が欲しいですか? – coderakki

+0

あなたはリストアイテムを参照していると思います。あなたはToDoクラスのh3タグにclassNameを与え、これらのCSSプロパティを定義することができます:width:75%; overflow-wrap:break-word; – coderakki

関連する問題