如何在reactjs中使用recompose清理表单?

时间:2018-09-27 02:02:01

标签: reactjs recompose

提交表单后,我想清理它,但是此解决方案似乎不起作用。这是我的提交处理程序:

handleSubmit: ({ title, body }, props) => e => {
    e.preventDefault()
    props
        .handleCreatePost({
            variables: {
                title,
                body
            }
        })
        .then(() => {
            return {
                title: "",
                body: ""
            }
        })
        .catch(err => console.log(err))
}

1 个答案:

答案 0 :(得分:0)

每次需要从组件内部更改道具时,都必须使用withStateHandlers

compose(
  withStateHandlers(
    ({title, body})=> ({title, body}), //set the state from parent props
    { 
      setTitle: () => title => ({title}), // update the title
      setBody: () => body => ({body}), // update the body
      clearProps: () => () => ({titel:'', body: ''}) // create a handler to reset the values
    }
  ),
  withHandlers({
    handleSubmit: ({ title, body, clearProps }, props) => e => {
      e.preventDefault()
      props
        .handleCreatePost({
          variables: {
            title,
            body
          }
        })
        .then(clearProps) // reset the values 
        .catch(err => console.log(err))
      }
    )
)