2017-11-09 1 views
1

私はReactJSを使い慣れていますが、すべて同じオプションが選択できる4つのドロップダウンメニューを作成しようとしていますが、オプションを選択すると、ドロップダウン。ドロップダウンオプションの削除を反応

+0

を排除すべきかのオプションを知っていますすでに試したことを説明するコード? –

+0

@Moonerumaあなたがすでに試したことと結果を教えてください。あなたが試したことのいくつかのコードを提供してください。 – Ganesh

答えて

0

あなたには、いくつかを提供してくださいすることができますが、すべての使用値を格納し、バックドロップダウンコンポーネントにプロパティとして渡す必要があります親コンポーネントを必要とするので、彼らは

const options = ['A', 'B', 'C', 'D', 'E']; 
const isNotUsed = unavailable => item => unavailable.indexOf(item) === -1; 

const Select = ({ onChange, unavailable, value, field }) => (
    <select onChange={e => onChange(e.target.value)} value={value}> 
    <option key="">Choose</option> 
    {options.filter(isNotUsed(unavailable)).map(item => (
     <option key={item} value={item}>{item}</option> 
    ))} 
    </select> 
); 

class App extends React.Component { 
    constructor(props) { 
    super(props); 
    this.state = { 
     values: {} 
    }; 
    } 

    handleChange(field, value) { 
    this.setState(state => ({ 
     ...state, 
     values: { 
     ...state.values, 
     [field]: value, 
     } 
    })); 
    } 

    render() { 
    const unavailableFor = (field) => 
     Object.keys(this.state.values) 
     .map(key => 
      key !== field 
      ? this.state.values[key] 
      : null 
     ) 
     .filter(Boolean); // remove empty 

    return (
     <div> 
      {['first', 'second', 'third', 'fourth'].map(field => (
      <Select 
       key={field} 
       field={field} 
       unavailable={unavailableFor(field)} 
       onChange={this.handleChange.bind(this, field)} /> 
      ))} 
     </div> 
    ); 
    } 
} 

Try it

+0

子どもにも影響を及ぼす親リストを使って見てください。また、そのコードは私のために働かなかったか、それとも不完全ですか? – Mooneruma

+0

どのようなエラーがありますか?あなたはこのリンクを試しましたか:https://jsfiddle.net/jprogd/69z2wepo/91041/?結果は右下隅に表示されます。 –

+0

あなたのプロと紳士が偉大な作品を気にしないでください。最初は何らかの理由でロードされていませんでした。 – Mooneruma

関連する問題